@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);