button

Button繼承自TextView.它的功能就是提供一個按鈕,這個按鈕可以供用戶點擊,當用戶對按鈕進行操作的時候,觸發相應事件,如點擊,觸摸。

還有一個ImageButton,它同繼承自Button,可以在ImageButton中顯示一個圖片展示給用戶看,并且對其Text屬性設置值的時候是無效的,其他功能與button一樣。

常用事件:
一般對于一個按鈕而言,用的最多的就是點擊事件,Button間接繼承自View,而AndroidUI中的所有事件,都是定義在View中的。示例講解的點擊事件、觸摸事件,其他事件的使用方式與此類似,只是觸發的時機不同而已。此處分別需要實現View.OnClickListener、View.OnTouchListener接口的方法。

View.OnClickListener,需要實現onClick(View v)方法,其中v為當前觸發事件的控件。
View.OnTouchListener,需要實現onTouch(View v , MotionEvent event),其中v為當前觸發事件的控件,event包括了觸摸時的具體內容,如移動、按下等


添加Button到XML布局文件中。

處理按鈕點擊:
按鈕點擊有兩種處理方法:
第一種是通過onClick屬性,通過這個屬性設置處理點擊事件的方法名, 在Activity中實現這個方法。
另一種方法是典型的事件監聽機制的應用形式,下面詳細說明這兩種方法。

  1. 通過onClick屬性設置處理方法:
    在XML布局文件中設置Button的屬性:
    android:onClick="yourMethodName"
    然后在該布局文件對應的Activity中實現該方法:
/** Called when the user touches the button */
public void yourMethodName(View view)
  {

   // Do something in response to button click
}

需要注意的是這個方法必須符合三個條件:
1.public

  1. 返回void
  2. 只有一個參數View,這個View就是被點擊的這個控件。

2.使用setOnClickListener添加監聽器對象

可以寫一個內部類,實現OnClickListener接口

Button button = (Button) findViewById(R.id.button_send);

button.setOnClickListener(new View.OnClickListener() {

  public void onClick(View v) 
{

      // Do something in response to button click

  }
});

android Button監聽的幾種方式:

  1. 一個button控件對應一個監聽(采用匿名內部類,簡短,清晰易懂,適用于“一次性”使用的按鈕):

     Button buttontest; 
     buttontest = (Button) findViewById(R.id.button1); 
     buttontest.setOnClickListener(new View.OnClickListener() {                      
     @Override           
     public void onClick(View v) {               
     // TODO Auto-generated method stub              
     Log.i("TEST", "**button** onClick");            
     }       
     });
    
  2. 多個button對應一個監聽1:

start = (Button) findViewById(R.id.button1);
stop = (Button)findViewById(R.id.button2);
start.setOnClickListener(mylistener );
stop.setOnClickListener(mylistener );
View.OnClickListener mylistener = new     View.OnClickListener() {              
@Override       
public void onClick(View v) {           
switch (v.getId()) {            
case R.id.button1:              
Log.d(TAG, "Start to recorder video\n");                
start_recorde();                
break;          
case R.id.button2:              
Log.d(TAG, "Stop to recorder video\n");
stop_recorde();             
break;          
default:                
break;          
}           
}   
};
  1. 多個button對應一個監聽2:

     public class MainActivity extends Activity implements View.OnClickListener{ 
     //界面元素  
     private Button start;   
     private Button stop;     
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    
     start = (Button) findViewById(R.id.button1); 
     stop = (Button) findViewById(R.id.button2);       
     start.setOnClickListener(this);     
     stop.setOnClickListener(this); 
     } 
     @Override 
     public boolean onCreateOptionsMenu(Menu menu) {   
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
     }   
     @Override   
     public void onClick(View v) {       
     switch (v.getId()) {        
     case R.id.button1:          
     Log.d(TAG, "Start to recorder video\n");                    
     break;      
     case R.id.button2:          
     Log.d(TAG, "Stop to recorder video\n");           
     break;      
     default:            
     break;      
     }   
     }       
     }
    
  2. xml中綁定監聽

     <Button 
     android:id="@+id/button1"                     
     android:layout_height="wrap_content"     
     android:layout_width="wrap_content"     
     android:onClick="mybuttonlistener">
     </Button>
    

對應java代碼如下:

Button btn = (Button) findViewById(R.id.button1);
public void mybuttonlistener(View target){ 
//do something5 
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容