原址:http://ssd910.blog.163.com/blog/static/23876797201021610282142/

Button 有按下效果

[功能]

让Button 有按下效果 更有视觉效果

[代码]

1. 先准备2张*.png 一张供默认使用 另一张供按下使用 本例为:

Java代码

  1. play.png
  2. play_down.png

play.pngplay_down.png

2. 根据各种状态 定制化所显示的 *.png 命名为: myselection.xml

Java代码

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <item
  4. android:state_pressed="false"
  5. android:drawable="@drawable/play"/>
  6. <item
  7. android:state_pressed="true"
  8. android:drawable="@drawable/play_down"/>
  9. <item
  10. android:drawable="@drawable/play"/>
  11. </selector>

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@drawable/play" /> <item android:state_pressed="true" android:drawable="@drawable/play_down" /> <item android:drawable="@drawable/play" /></selector>

3. 在 main.xml 布局中 添加Button 元件 并 设置 使用 myselection.xml

Java代码

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="ButtonStyle!"
  11. />
  12. <ImageButton
  13. android:id="@+id/playorpause"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:src="@xml/myselection"
  17. android:background="#00000000"/>
  18. </LinearLayout>

<?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="Button Style!" /><ImageButton android:id="@+id/playorpause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@xml/myselection" android:background="#00000000" /></LinearLayout>

4. 大家可以自己看看效果 因为不好截图

其实 除了上面的方法 还有一个方法 为:

1. 在 maun.xml 中添加 ImageButton 且不设置使用的*.png

Java代码

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <ImageButton
  8. android:id="@+id/button"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. />
  12. </LinearLayout>

<?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" ><ImageButton android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

2. 在该ImageButton上设置监听器 并根据其状态使用对应的资源 但是必须要设置默认资源

Java代码

  1. ImageButtonbtn=(ImageButton)findViewById(R.id.button);
  2. //tosetitsdefault*.png
  3. btn.setBackgroundResource(R.drawable.play);
  4. btn.setOnTouchListener(newImageButton.OnTouchListener(){
  5. @Override
  6. publicbooleanonTouch(Viewarg0,MotionEventarg1){
  7. //TODOAuto-generatedmethodstub
  8. if(arg1.getAction()==MotionEvent.ACTION_DOWN){
  9. arg0.setBackgroundResource(R.drawable.play_down);
  10. }
  11. elseif(arg1.getAction()==MotionEvent.ACTION_UP){
  12. arg0.setBackgroundResource(R.drawable.play);
  13. }
  14. returnfalse;
  15. }
  16. });

ImageButton btn = (ImageButton) findViewById(R.id.button); //to set its default *.png btn.setBackgroundResource(R.drawable.play); btn.setOnTouchListener(new ImageButton.OnTouchListener(){ @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub if(arg1.getAction() == MotionEvent.ACTION_DOWN){ arg0.setBackgroundResource(R.drawable.play_down); } else if(arg1.getAction() == MotionEvent.ACTION_UP){ arg0.setBackgroundResource(R.drawable.play); } return false; } });

具体哪个方法更好 应该根据自己的场合:

1. 只有一个Button 推荐使用第一个方法

2. 有几个Button推荐使用第二个 统一定义 然后根据指定的id 来使用目标*.png

更多相关文章

  1. Ubuntu13.04环境下载、编译Android源代码
  2. Android进阶(二)https请求No peer certificate的解决方法.
  3. node.js+android(使用HttpURLConnection和HttpClient)实现文件上
  4. Android动画之三:Property Animation(上)
  5. android.app.Activity 的介绍(转)
  6. ActionBar的简单使用(修改背景颜色,文字居中,图标)
  7. Android(安卓)Adapter
  8. Android(安卓)fragment 获取id,findViewById为空
  9. WebView的Java和javascript相互调用

随机推荐

  1. Android 蓝牙状态机以及蓝牙启动状态机
  2. Android事件分发机制
  3. Tiny210(Android)串口收发测试通过
  4. android 流量统计实现思路
  5. TextView中ellipsize属性焦点异常处理
  6. 如何为香蕉派 banana pi BPI-M2编译Andro
  7. android菜单Tips
  8. Android 编程设置 APN
  9. [android]Activity切换动画
  10. Android(安卓)EGL_BAD_CONFIG error,配置E