安卓控件使用系列8:Button按钮几个重要事件的使用

Button控件是安卓应用程序开发经常使用的控件,下面来介绍一下比较重要的几个事件的使用。

整体思路:首先继承OnClickListener,OnTouchListener,OnFocusChangeListener,OnKeyListener这四个Button控件重要的事件,然后在OnClick事件中写适屏的代码(如果超过了屏幕宽度就减小一些宽度和高度;如果图片宽度太小就增加一些宽度和高度),以此来观察点击时按钮或图片的不断变大直到不变的功能;在onKey事件中根据按上和按下操作设置不同的图片;在onFocusChange事件中根据焦点的变化设置不同的图片;在onTouch事件中根据触摸和没触摸设置不同的图片。这样就可以比较清楚的看到这几个事件的作用和使用方法。

activity_main.xml文件:

 <Button 
       android:id="@+id/commonbutton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="我的按钮一"
       />
   <Button 
       android:id="@+id/imagebutton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/button1"
       android:gravity="center"
       />
MainActivity.java文件:

public class MainActivity extends Activity implements OnClickListener,OnTouchListener,OnFocusChangeListener,OnKeyListener{
    private int value=1;
    private Button commonButton;
    private Button imageButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		commonButton=(Button)findViewById(R.id.commonbutton);
		imageButton=(Button)findViewById(R.id.imagebutton);
		commonButton.setOnClickListener(this);
		imageButton.setOnClickListener(this);
		imageButton.setOnTouchListener(this);
		imageButton.setOnFocusChangeListener(this);
		imageButton.setOnKeyListener(this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Button button=(Button)v;
		if(value==1&&button.getWidth()==getWindowManager().getDefaultDisplay().getWidth()){
			value=-1;
		}else if(value==-1&&button.getWidth()<100){
			value=1;
		}
		button.setWidth(button.getWidth()+(int)(button.getWidth()*0.1)*value);
		button.setHeight(button.getHeight()+(int)(button.getHeight()*0.1)*value);
	}
	@Override
	public boolean onKey(View v, int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if(KeyEvent.ACTION_DOWN==event.getAction()){
			v.setBackgroundResource(R.drawable.try1);
		}else if(KeyEvent.ACTION_UP==event.getAction()){
			v.setBackgroundResource(R.drawable.try2);
		}
		return false;
	}
//当前这个控件的焦点发生变化的时候会触发
	@Override
	public void onFocusChange(View arg0, boolean arg1) {
		// TODO Auto-generated method stub
		if(arg1){
			imageButton.setBackgroundResource(R.drawable.test1);
		}else{
			imageButton.setBackgroundResource(R.drawable.test2);
		}
		
	}
//触摸时发生变化
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		if(event.getAction()==MotionEvent.ACTION_UP){
			v.setBackgroundResource(R.drawable.button1);
		}else if(event.getAction()==MotionEvent.ACTION_DOWN){
			v.setBackgroundResource(R.drawable.button2);
		}
		return false;
	}
}

你可能感兴趣的:(安卓,事件,按钮,button,重要)