您的位置:首页 > 移动开发 > Android开发

Android中的Button自定义点击效果

2014-04-07 09:33 447 查看
 方法一

1.放在drawable下的selector.xml文件

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

 <item android:state_pressed="true" android:drawable="@drawable/temp1" />

 <item android:state_pressed="false" android:state_focused="false"

  android:drawable="@drawable/temp2" />

 <item android:state_focused="true" android:drawable="@drawable/temp3" />

 <item android:state_focused="false" android:drawable="@drawable/temp4" />

</selector>

2.布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />

<Button

 android:drawableTop="@drawable/shouru"

 android:layout_width="wrap_content"

 android:layout_height="wrap_content"

 android:text="@string/button"

 android:background="@drawable/selector"/>

</LinearLayout>

3.只是为了测试,所以效果不是很好,Button部分状态效果图如下:

①初始化的时候默认显示的按钮效果:



②点击后释放显示的效果



③点击不放时的效果



 方法二

1.布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />

<Button

 android:id="@+id/button"

 android:drawableTop="@drawable/shouru"

 android:layout_width="wrap_content"

 android:layout_height="wrap_content"

 android:text="@string/button"

 android:background="@drawable/temp4"/>

</LinearLayout>

2.主要的java代码,实现点击效果:

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

   button.setOnTouchListener(new Button.OnTouchListener(){

   @Override

   public boolean onTouch(View v, MotionEvent event) {

    if(event.getAction() == MotionEvent.ACTION_DOWN){   

                    v.setBackgroundResource(R.drawable.temp1);   

                    Log.i("TestAndroid Button", "MotionEvent.ACTION_DOWN");

                }   

                else if(event.getAction() == MotionEvent.ACTION_UP){   

                    v.setBackgroundResource(R.drawable.temp2); 

                    Log.i("TestAndroid Button", "MotionEvent.ACTION_UP");

                } 

    return false;

   }

  });
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: