自定義乙個可以隨著手指拖動的按鈕

2021-07-05 22:01:35 字數 2477 閱讀 9663

效果圖:

關狀態                              中間拖動                   開開關

素材

關狀態的背景圖

開狀態的背景圖

拖動的按鈕

下面就直接來看看**吧:

一、自定義的乙個控制項:

一、自定義的乙個控制項:

package com.zhong.newswitch.view;

import android.content.context;

import android.content.res.typedarray;

import android.graphics.bitmap;

import android.graphics.bitmapfactory;

import android.graphics.canvas;

import android.util.attributeset;

import android.view.motionevent;

import android.view.view;

import com.zhong.newswitch.r;

public class slideswitch extends view

public slideswitch(context context)

public slideswitch(context context, attributeset attrs)

public slideswitch(context context, attributeset attrs, int defstyle)

private void init(context context, attributeset attrs, int defstyle)

}@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

@override

protected void ondraw(canvas canvas)

if (countx > (imgoff.getwidth() - imgbtn.getwidth() / 2))

//當移動過了中間線左邊時為關,在右邊背景改為開的

if (countx < imgoff.getwidth() / 2) else

//繪製小按鈕

canvas.drawbitmap(imgbtn, countx - imgbtn.getwidth() / 2 - 2, 0, null);

}@override

public boolean ontouchevent(motionevent event) else

//判斷是否有監聽如果沒有設定監聽不呼叫,判斷現在的狀態原先的狀態是否一樣,如果一樣不呼叫

if (listener != null&&laststaete!=switchstate)

laststaete = switchstate;

break;

case motionevent.action_down:

break;

case motionevent.action_move:

break;

}invalidate();

return true;

}//新增乙個可以設定選中狀態的方法

public void setswitchstate(boolean state) else

}//新增乙個開關事件的監聽介面

public inte***ce onswitchstatechanglistener

}

二、自定義乙個第一在xml中用的屬性

在res目錄下鍵 res-values-slft_attrs.xml

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

三、main.xml中的**

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

四 、mainactivity中的**

package com.zhong.newswitch;

import android.os.bundle;

import android.widget.toast;

import com.zhong.newswitch.view.slideswitch;

public class mainactivity extends activity

});}

}

ok了

android 自定義元件隨著手指自動畫圓

首先自定義乙個view子類 package com.example.androidtest0.myview import android.content.context import android.graphics.canvas import android.graphics.color impo...

自定義View,建立乙個小圓點,單擊可以拖動

xml version 1.0 encoding utf 8 xmlns android xmlns xmlns tools android layout width match parent android layout height match parent tools context com....

自定義View上(做乙個可拖動的控制項)

布局 xml version 1.0 encoding utf 8 android.support.constraint.constraintlayoutxmlns android xmlns xmlns tools android layout width match parent android...