開關按鈕實現

2022-07-22 14:33:15 字數 1956 閱讀 4634

總共有兩張,一張背景,一張遮罩。背景有開關字樣,通過遮住乙個字來實現開關按鈕。繼承自view控制項,通過canvas和paint結合來實現的繪製。

通過canvas的drawbitmap方法和距離左邊的位置來繪製,呼叫invalidate方法來不斷的更新ui,就可以實現滑動的效果。

public class mytogglebutton extends view implements onclicklistener

/*** 在布局檔案中聲名的view,建立時由系統自動呼叫。

* @param context 上下文物件

* @param attrs 屬性集

*/public mytogglebutton(context context, attributeset attrs)

/*** 初始化

*/private void initview()

/* * view 物件顯示的螢幕上,有幾個重要步驟:

* 1、構造方法 建立 物件。

* 2、測量view的大小。 onmeasure(int,int);

* 3、確定view的位置 ,view自身有一些建議權,決定權在 父view手中。 onlayout();

* 4、繪製 view 的內容 。 ondraw(canvas)

*/

/*** 測量尺寸時的**方法

*/@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec) catch (exception e) }

@override

/*** 繪製當前view的內容

*/protected void ondraw(canvas canvas)

@override

/*** onclick 事件在view.ontouchevent 中被解析。

* 系統對onclick 事件的解析,過於簡陋,只要有down 事件 up 事件,系統即認為 發生了click 事件

* */

public void onclick(view v) }

/*** down 事件時的x值

*/private int firstx;

/*** touch 事件的上乙個x值

*/private int lastx;

@override

public boolean ontouchevent(motionevent event)

//計算 手指在螢幕上移動的距離

int dis = (int) (event.getx() - lastx);

//將本次的位置 設定給lastx

lastx = (int) event.getx();

//根據手指移動的距離,改變slidebtn_left 的值

slidebtn_left = slidebtn_left+dis;

break;

case motionevent.action_up:

//在發生拖動的情況下,根據最後的位置,判斷當前開關的狀態

if (isdrag) else

flushstate();

}break;

} flushview();

return true;

} /**

* 重新整理當前狀態

*/private void flushstate() else

mtoggleswitch.openorclose(currstate);

flushview(); }

/*** 重新整理當前視力

*/private void flushview() else

}});

使用ToggleButton按鈕實現開關效果

android ischecked true android texton 開 android textoff 關 開與關的內容自己可以設定成適用的不同內容。一 編寫布局檔案。新增togglebutton與imageview控制項。如下 二 在activity中實現邏輯部分。請看 以上的內容即可完成...

開關按鈕Switch

思路 自定義view,重寫和封裝好方法,外部直接呼叫 三個構造方法 onmeasure onlayout ondraw 重寫這些方法,實現自定義控制項 測量 在這個方法裡指定自己的寬高 布局 擺放 繪製內容 觸控事件ontouchevent motionevent event 封裝自定義方法 狀態更...

QT自繪滑動開關按鈕

1 使用滑鼠妥當滑塊,拖到左邊為 關 拖到右邊為 開 2 釋放滑鼠時判斷開關,並發射開 關狀態訊號。3 關狀態時滑塊為黑色,拖動狀態時為紅色,開狀態時滑塊為藍色。二 類的封裝 ifndef switchbutton h define switchbutton h include include in...