您的位置:首页 > 其它

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

2015-10-02 11:41 459 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: