自定义view 开关的实现案例

来源:互联网 发布:spaceman软件 编辑:程序博客网 时间:2024/05/19 01:14
 @Override protected void onDraw(Canvas canvas) {    //创建背景图片     canvas.drawBitmap(backbit,0,0,null);if(flag){      float lift=xf-frastbit.getWidth()/2;      if(lift<0){          lift=0;      }else if(lift>backbit.getWidth()-frastbit.getWidth()){          lift=backbit.getWidth()-frastbit.getWidth();      }    canvas.drawBitmap(frastbit,lift,0,null);}else{    //判断按钮的位置    if(state){        canvas.drawBitmap(frastbit,backbit.getWidth()-frastbit.getWidth(),0,null);    }else{        canvas.drawBitmap(frastbit,0,0,null);    }} } //创建触摸事件 @Override public boolean onTouchEvent(MotionEvent event) {     switch (event.getAction()){         case MotionEvent.ACTION_DOWN:             flag=true;             xf = event.getX();             break;         case MotionEvent.ACTION_MOVE:             xf = event.getX();             break;         case MotionEvent.ACTION_UP:             flag=false;             xf = event.getX();             state=xf>backbit.getWidth()/2;             break;     }    postInvalidate();     return true; } //创建你背景图片的方法 public void getbackimag(int drawable){     backbit = BitmapFactory.decodeResource(getResources(), drawable); } public void getfrastimag(int drawable){     frastbit = BitmapFactory.decodeResource(getResources(), drawable); } //创建默认状态 public void getstate( boolean state){   this.state=state; }
//activity
//设置图片kaiguan.getbackimag(R.drawable.switch_background);kaiguan.getfrastimag(R.drawable.slide_button_background);kaiguan.getstate(false);
 
原创粉丝点击