Android中Shape、selector在xml中的使用、切换按钮的背景图案

如果你想让背景有边界,使用下面的代码:在res/drawable下新建buttonshape.xml

一、Android中Shape使用
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:drawable="@drawable/添加的图片" />
    <item >
        <shape>
            <solid/>
            <corners android:radius="100dp"/>
		<size
		android:width="180dp"
		android:height="180dp"/>
            <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
        </shape>
    </item> 
  </layer-list> 																		
在layout中加背景
<Button
		android:id="@+id/button"
		android:layout_centerInParent="true"
	
		android:layout_width="180dp"
		android:layout_height="180dp"
		android:background="@drawable/buttonshape"
	/>
二、接下来是点击按钮改变按钮背景图案焦点一移开,图案又恢复原貌。(有2个方法可以实现,一种是用 选择器 selector)
<?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/earth1" /> //表示按钮View处于按下状态的图片
	 <item android:state_focused="true" android:drawable="@drawable/earth1" />//表示按钮View获取焦点时的图片
	 <item android:drawable="@drawable/earth0" />//表示View默认的图片
</selector>
<Button
	android:id="@+id/button"
	android:layout_centerInParent="true"
      	android:layout_width="wrap_content"
      	android:layout_height="wrap_content"
	android:background="@drawable/button_selector"
	/>
相关属性:

android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
另一种就是在触摸事件中直接设置

    private Button mBtn; //定义我们的按钮

    在onCreate中加入

      mBtn = (Button) findViewById(R.id.btn); //btn为layout中的Button ID

      mBtn.setOnTouchListener(new OnTouchListener()
        {
          public boolean onTouch(View arg0,MotionEvent arg1)
          {
           if(arg1.getAction() == MotionEvent.ACTION_DOWN) 
           {
            arg0.setBackgroundResource(R.drawable.pressed); //按下的图片对应pressed
           }
           else if(arg1.getAction() == MotionEvent.ACTION_UP)
           {
            arg0.setBackgroundResource(R.drawable.normal); //常态下的图片对应normal
           }

           else if()  //这里还可以继续实现MotionEvent.ACTION_MOVE和MotionEvent.ACTION_CANCEL等实现更多的特效
           return false;
          }
        });
三、通过按钮切换button的背景图案
public class MainActivity extends Activity implements OnClickListener{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.button);      
        button.setOnClickListener(this);
    }
    	int i=0;
        		@Override
            	public void onClick(View v){
        			i++;
            		switch(i){
           			case 1:
            			v.findViewById(R.id.button).setBackgroundResource(R.drawable.earth1);
            			Toast.makeText(MainActivity.this,"是个a",Toast.LENGTH_SHORT).show();
            			break;
           			case 2:
            			v.findViewById(R.id.button).setBackgroundResource(R.drawable.earth0);
            			Toast.makeText(MainActivity.this,"是个b",Toast.LENGTH_SHORT).show();
            			break;
           			case 3:
            			v.findViewById(R.id.button).setBackgroundResource(R.drawable.earth1);
            			Toast.makeText(MainActivity.this,"是个c",Toast.LENGTH_SHORT).show();
            			i=1;
            			break;
            		default:
            			break;
            		}
        	} 
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值