Android从零开始(九)

知识点:Button


核心代码:
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();
			}
		});
	}

	
}



源码下载请点这里:

猜你喜欢

转载自1136051009.iteye.com/blog/1776183