核心代码:
package com.zjyb.demo16; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button standard_btn=(Button)findViewById(R.id.standard_btn); //Android中有很多事件带boolean的返回值 //这类事件有个共同点:绝对不是最后一个被触发的 //任何一个控件或是事件发生,将会触发一个事件链 //比如在Button中会依次触发onTouch-->onTouch-->onClick //也就是说正常情况下我们点击(触摸)一个按钮,实际上会有三个事件来进行处理 //分别是:按下,离开和点击,其中按下和离开都是属于Touch的两种状态 //返回的boolean值是表示这个事件是否已经处理完毕 //因为大多数时候其实我们不需要三个事件来完成这次触发的动作,也许只要一个就可以了 //后面的调用是多余的,那么我们可以将返回值设置为true,表示事件已经结束 //那么后续的事件方法将不再被调用 //而默认是false,所以会正常完成所有的调用过程 standard_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.v("Tag", "onClick"); } }); standard_btn.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.v("Tag", "onTouch"); return false; } }); standard_btn.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { Log.v("Tag", "onLongClick"); //Toast.makeText(MainActivity.this, "按钮被长按", Toast.LENGTH_SHORT).show(); return false; } }); //单选的事件 RadioGroup sex_group=(RadioGroup)findViewById(R.id.sex_group); sex_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub RadioButton btn=(RadioButton) findViewById(checkedId); Toast.makeText(MainActivity.this, "选择了"+btn.getText(), Toast.LENGTH_SHORT).show(); } }); //多选,选项被钩选或取消钩选时触发 final LinearLayout hobby=(LinearLayout)findViewById(R.id.hobby); for(int i=0;i<hobby.getChildCount();i++){ CheckBox cb=(CheckBox) hobby.getChildAt(i); cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ //被钩选 Toast.makeText(MainActivity.this, buttonView.getText()+"被钩选", Toast.LENGTH_SHORT).show(); }else{ //被取消 Toast.makeText(MainActivity.this, buttonView.getText()+"被取消钩选", Toast.LENGTH_SHORT).show(); } } }); } //显示所有被钩选的多选项有什么 Button btn=(Button)findViewById(R.id.hobby_btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub StringBuffer sb=new StringBuffer(); for(int i=0;i<hobby.getChildCount();i++){ CheckBox ch=((CheckBox)hobby.getChildAt(i)); if(ch.isChecked()){ sb.append(ch.getText()); sb.append(","); } } if(sb.length()!=0){ sb.deleteCharAt(sb.length()-1); } Toast.makeText(MainActivity.this, sb.toString(),Toast.LENGTH_LONG).show(); } }); } }
源码下载请点这里: