日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

android自定義加減按鈕

瀏覽:155日期:2022-09-25 10:14:03

本文實例為大家分享了android自定義加減按鈕的具體代碼,供大家參考,具體內容如下

1、定義兩個shape:

my_button_shape_normal.xml:

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android' android:shape='rectangle' > <stroke android: android:color='#007FFF' /> <corners android:radius='5dip' /> <padding android:bottom='1dp' android:left='10dp' android:right='10dp' android:top='1dp' /></shape>

my_button_shape_pressed.xml:

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android' android:shape='rectangle' > <stroke android: android:color='#007FFF' /> <corners android:radius='5dip' /> <padding android:bottom='1dp' android:left='10dp' android:right='10dp' android:top='1dp' /></shape>

2、定義一個drawable:my_button_style.xml

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item android:drawable='@drawable/my_button_shape_normal' android:state_focused='false' android:state_pressed='false'></item> <item android:drawable='@drawable/my_button_shape_pressed' android:state_focused='false' android:state_pressed='true'></item></selector>

3、定義button布局(mybutton.xml):

<?xml version='1.0' encoding='utf-8'?><RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='wrap_content' android:layout_height='wrap_content' android:orientation='horizontal' > <Button android: android:layout_width='50dp' android:layout_height='30dp' android:background='@drawable/my_button_style' android:gravity='center' android:paddingBottom='10dp' android:text='-' android:textColor='#007FFF' /> <Button android: android:layout_width='50dp' android:layout_height='30dp' android:layout_toRightOf='@+id/reduce' android:background='@drawable/my_button_style' android:gravity='center' android:paddingBottom='10dp' android:text='+' android:textColor='#007FFF' /></RelativeLayout>

4、定義MyButton類:

public class MyButton extends RelativeLayout { private View view; private Button add, reduce; private OnAddReduceChangeStatusListener mAddReduceChangeStatusListener; public MyButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MyButton(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub view = LayoutInflater.from(context).inflate(R.layout.mybutton, this, true); init(); } public MyButton(Context context) { super(context); // TODO Auto-generated constructor stub } private void init() { add = (Button) view.findViewById(R.id.add); reduce = (Button) view.findViewById(R.id.reduce); add.setOnTouchListener(new ComponentOnTouch()); reduce.setOnTouchListener(new ComponentOnTouch()); } class ComponentOnTouch implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.add: if (mAddReduceChangeStatusListener != null) { mAddReduceChangeStatusListener.add(MyButton.this.getId(),event.getAction()); } break; case R.id.reduce: if (mAddReduceChangeStatusListener != null) { mAddReduceChangeStatusListener.reduce(MyButton.this.getId(),event.getAction()); } break; } return true; } } public void setOnAddReduceChangeStatusListener(OnAddReduceChangeStatusListener listener) { this.mAddReduceChangeStatusListener = listener; } public abstract interface OnAddReduceChangeStatusListener { public abstract boolean add(int viewId,int eventAction); public abstract boolean reduce(int viewId,int eventAction); }}

5、布局中使用:

<package.MyButton android: android:layout_width='wrap_content' android:layout_height='wrap_content' > </package.MyButton>

6.代碼中使用:

a.初始化:

mybutton = (MyButton) findViewById(R.id.mybutton_id); mybutton.setOnAddReduceChangeStatusListener(new OnAddReduceListener());

b.listener監聽:

class OnAddReduceListener implements OnAddReduceChangeStatusListener { @Override public boolean add(int viewId, int eventAction) { // TODO Auto-generated method stub if (eventAction == MotionEvent.ACTION_DOWN) { onTouchChange('add'); } else if (eventAction == MotionEvent.ACTION_UP) { if (plusThread != null) { isOnLongClick = false; } } else if (eventAction == MotionEvent.ACTION_MOVE) { if (plusThread != null) { isOnLongClick = true; } } else if (eventAction == MotionEvent.ACTION_CANCEL) { if (plusThread != null) { isOnLongClick = false; } } return true; } @Override public boolean reduce(int viewId, int eventAction) { // TODO Auto-generated method stub if (eventAction == MotionEvent.ACTION_DOWN) { onTouchChange('reduce'); } else if (eventAction == MotionEvent.ACTION_UP) { if (miusThread != null) { isOnLongClick = false; } } else if (eventAction == MotionEvent.ACTION_MOVE) { if (miusThread != null) { isOnLongClick = true; } } else if (eventAction == MotionEvent.ACTION_CANCEL) { if (miusThread != null) { isOnLongClick = false; } } return true; } } private void onTouchChange(String method) { if (method.equals('add')) { plusThread = new PlusThread(); isOnLongClick = true; plusThread.start(); } else if (method.equals('reduce')) { miusThread = new MiusThread(); isOnLongClick = true; miusThread.start(); } }

c,定義兩個線程用來加減:

// 減操作 class MiusThread extends Thread { @Override public void run() { while (isOnLongClick) { try { Thread.sleep(200); myHandler.sendEmptyMessage(1); } catch (InterruptedException e) { e.printStackTrace(); } super.run(); } } } // 加操作 class PlusThread extends Thread { @Override public void run() { while (isOnLongClick) { try { Thread.sleep(200); myHandler.sendEmptyMessage(2); } catch (InterruptedException e) { e.printStackTrace(); } super.run(); } } }

使用Handler進行處理:

Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub if (msg.what == 1) { //加操作 } else if (msg.what == 2) { //減操作 } } };

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品私拍| 美女久久一区| 亚洲少妇在线| 成人精品高清在线视频| 国产探花在线精品一区二区| 快she精品国产999| 日韩激情一区二区| 91精品啪在线观看国产爱臀| 国产精品亚洲一区二区在线观看 | 天堂日韩电影| 99视频精品全部免费在线视频| 久久国产欧美| av成人国产| 日韩高清三区| 欧美xxxx性| 国内揄拍国内精品久久| 高潮久久久久久久久久久久久久| 久久久噜噜噜| 日韩视频在线一区二区三区| 日本亚洲最大的色成网站www| 美女视频网站久久| 婷婷亚洲五月| 国产福利资源一区| 欧美高清不卡| 六月天综合网| 日韩一区二区三区免费播放| 久久久精品五月天| 91精品视频一区二区| 欧美国产小视频| 亚洲精品美女| 日韩电影免费网址| 亚洲精品1区| 久久久久久久欧美精品| 91久久中文| 成人国产精品| 视频精品一区| 久久婷婷亚洲| 国产福利亚洲| 999在线观看精品免费不卡网站| 99视频+国产日韩欧美| 欧美激情精品| 日韩午夜视频在线| 黄色国产精品| 亚洲精品.com| 精品日韩一区| 久久精品72免费观看| 在线视频精品| 亚洲网站视频| 国产亚洲久久| 亚洲人成精品久久久| 国产精品原创| 久久三级中文| 国产黄色精品| 久久精品伊人| 国产探花一区| 久久国内精品自在自线400部| 综合欧美精品| 亚洲精品系列| 水野朝阳av一区二区三区| 久久国产成人午夜av影院宅| 日韩三区免费| 自拍日韩欧美| 99在线|亚洲一区二区| 婷婷亚洲五月色综合| 亚洲二区视频| 国产精品美女| 亚洲一区二区三区中文字幕在线观看| 亚洲午夜一级| 男女男精品视频网| 日韩黄色在线观看| 亚洲一级淫片| 国产精品流白浆在线观看| 国产女人18毛片水真多18精品| 欧美天堂在线| 久久97视频| 久久婷婷av| 中文在线免费视频| 国产91欧美| 亚洲精品小说| 日本aⅴ免费视频一区二区三区| 青青草国产成人99久久| 日韩一区二区三区高清在线观看| 欧美一区不卡| 国产一区二区三区四区大秀| 久久一区精品| 精品一区在线| 国产欧美久久一区二区三区| 欧美www视频在线观看| 亚洲国产影院| 日本中文字幕不卡| 成人小电影网站| 午夜久久av| 精品捆绑调教一区二区三区| 久久亚洲色图| 三级在线看中文字幕完整版| 免费看日韩精品| 蜜臀国产一区| 日韩精品导航| av不卡在线看| 精品一区二区三区中文字幕 | 日韩av资源网| 在线天堂中文资源最新版| 日韩在线一区二区| 精品国产成人| 日韩激情视频网站| 日韩午夜av在线| 日韩免费看片| 国产欧美亚洲精品a| 蜜臀精品一区二区三区在线观看| 欧美激情三区| 欧美一区成人| 日本欧洲一区二区| 久久在线电影| 日韩在线短视频| 国产一区二区视频在线看| 91精品国产自产精品男人的天堂| 亚洲欧美高清| 亚洲欧美激情诱惑| 五月天久久网站| 1000部精品久久久久久久久| 91视频精品| 成人污污视频| 国产精品伦理久久久久久| 欧美激情综合| 国产免费播放一区二区| 日韩欧美2区| 国产探花一区二区| 清纯唯美亚洲综合一区| 欧美日本不卡高清| 国产亚洲高清在线观看| 国产美女久久| 国产福利片在线观看| 97国产精品| 日韩av首页| 精品视频黄色| 日韩免费视频| 精品一区欧美| 伊人久久成人| 欧美综合国产| 综合一区av| 国产精品一区二区精品视频观看 | 亚洲午夜电影| 午夜国产精品视频| 亚洲精品伊人| 精品色999| 国产在线观看91一区二区三区| 国产精品精品| 久久av在线| 老鸭窝一区二区久久精品| 91精品久久久久久久久久不卡| 中文在线一区| 国产精品国码视频| 久久九九电影| 四虎国产精品免费久久| 精品视频网站| 男女性色大片免费观看一区二区 | 国产精品观看| 超碰在线99| 午夜久久av| 秋霞影院一区二区三区| 欧美日韩精品一区二区三区视频| 粉嫩av一区二区三区四区五区| 在线亚洲国产精品网站| 欧美a一区二区| 热久久久久久久| 婷婷综合六月| 欧美三区不卡| 亚洲综合日韩| 亚洲性色av| 国产精品亚洲欧美| 午夜一区在线| 国产精品**亚洲精品| 日韩影院在线观看| 91精品国产乱码久久久久久久| 国产欧美久久一区二区三区| 国产一区二区三区网| 中文字幕日韩欧美精品高清在线| 国产在线一区不卡| 欧美日韩网址| 日本成人在线一区| 久久av一区| 黄色日韩在线| 亚洲调教视频在线观看| 精品国产一区二| 国产精品久久亚洲不卡| 日本不卡一区二区三区| 亚洲大全视频| 久久中文亚洲字幕| 91精品韩国| 蜜桃av.网站在线观看| 亚洲在线电影| 午夜亚洲福利| 亚洲1区在线观看| 亚洲香蕉久久| 免费人成精品欧美精品| 日韩中文欧美在线| 亚洲精品视频一二三区| 亚洲精品乱码| 欧美视频精品全部免费观看| 日韩二区三区在线观看|