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

    技术2022-05-19  20

     

    功能]

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

     

    [代码]

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

     

    Java代码  

    1.      play.png  

    2.      play_down.png  

     

     

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

    Java代码  

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

    2.      <selector xmlns: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>   

     

     

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

    Java代码  

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

    2.      <LinearLayout xmlns: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="Button Style!"  

    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>  

     

     

     

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

     

     

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

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

    Java代码  

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

    2.      <LinearLayout xmlns: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>  

     

     

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

    Java代码  

    1.      ImageButton btn = (ImageButton) findViewById(R.id.button);  

    2.                

    3.              //to set its default *.png  

    4.              btn.setBackgroundResource(R.drawable.play);  

    5.              btn.setOnTouchListener(new ImageButton.OnTouchListener(){  

    6.                  @Override  

    7.                  public boolean onTouch(View arg0, MotionEvent arg1) {  

    8.                      // TODO Auto-generated method stub  

    9.                      if(arg1.getAction() == MotionEvent.ACTION_DOWN){  

    10.                      arg0.setBackgroundResource(R.drawable.play_down);  

    11.                  }  

    12.                  else if(arg1.getAction() == MotionEvent.ACTION_UP){  

    13.                      arg0.setBackgroundResource(R.drawable.play);  

    14.                  }  

    15.                    

    16.                  return false;  

    17.              }  

    18.                

    19.          });  

     

     

     

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

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

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

     


    最新回复(0)