日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

滑块按钮

發布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 滑块按钮 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

滑塊按鈕的實現

運行的效果:


用到的圖片:(放置到drawable_xhdpi目錄下)

? ? ? ? ? ?

public class SlipButton extends View{?

??

??? private Bitmap bitmapDrawUnderSlid;

??? private Bitmap bitmapDrawSlid;

??? private Paint paint;

??? private int backWidth;????????????????? //滑座圖片的寬度

??? private int slidWidth;????????????????? //滑塊圖片的寬度

??? private float location;???????????????? //手觸摸的位置

??? private boolean isOn = true;???????????//是打開還是關閉

??? private boolean isSliding = false;????? //是否正在滑動

???

??? public SlipButton(Context context,AttributeSetattrs) {

?????? super(context);?

?????? init();

??? }??

???

??? /**

??? ?* 初始化參數

??? ?*/

??? public void init(){

?????? bitmapDrawUnderSlid = BitmapFactory.decodeResource(getResources(),R.drawable.slid_button_background);

?????? bitmapDrawSlid = BitmapFactory.decodeResource(getResources(),R.drawable.slid_button);

?????? backWidth = bitmapDrawUnderSlid.getWidth();

?????? slidWidth = bitmapDrawSlid.getWidth();

?????? paint = new Paint();

??? }

???

??? /**

??? ?* 重寫viewonDraw函數

??? ?*/

??? @Override

??? protected void onDraw(Canvas canvas) {

?????? if(isSliding){

??????????

?????? }else{

?????????? if(location > backWidth/2 - slidWidth/2){

????????????? location = backWidth/2;

?????????? }else{

????????????? location = 0;

?????????? }

?????? }

?????? canvas.drawBitmap(bitmapDrawUnderSlid, 0, 0, paint);

?????? canvas.drawBitmap(bitmapDrawSlid,location, 0, paint);??

??? }

???

??? /**

??? ?* 控制滑塊的移動,并且會重新設置移動的位置的參數

??? ?*/

??? @Override

??? public boolean onTouchEvent(MotionEventevent) {?

?????? switch (event.getAction()) {

?????????? case MotionEvent.ACTION_DOWN:{?????????????????? //手按下的時候

????????????? location = event.getX();

????????????? isSliding = true;

????????????? if(location > backWidth - slidWidth){

????????????????? location = backWidth - slidWidth;

????????????????? isOn = false;

????????????? }else if(location < slidWidth/2){

????????????????? location = 0;

????????????????? isOn = true;

????????????? }else{

????????????????? location=location - slidWidth/2;

????????????? }

????????????? break;

?????????? }

??????

?????????? case MotionEvent.ACTION_UP:{????????????//手指離開的時候

????????????? location = event.getX();

????????????? isSliding = false;

????????????? if(location > backWidth - slidWidth){

????????????????? location = backWidth - slidWidth;

????????????????? isOn = false;

????????????? }else if(location < slidWidth/2){

????????????????? location = 0;

????????????????? isOn = true;

????????????? }else{

????????????????? location=location - slidWidth/2;

????????????? }

????????????? break;

?????????? }??

?????????????

?????????? case MotionEvent.ACTION_MOVE:{?????????//手指移動的時候

????????????? isSliding = true;

????????????? location = event.getX();

????????????? if(location > backWidth - slidWidth){

????????????????? location = backWidth - slidWidth;

????????????????? isOn = false;

????????????? }else if(location < slidWidth/2){

????????????????? isOn = true;

????????????????? location = 0;

????????????? }else{

????????????????? location=location - slidWidth/2;

????????????? }

????????????? break;

?????????? }

??????????

?????????? default:break;

?????? }??

?????? invalidate();???????? //此函數是view自帶的函數,用于調用onDraw函數重新繪制

?????? return true;

??? }??

}

總結

以上是生活随笔為你收集整理的滑块按钮的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。