真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于Android自定義View中的onTouchEvent(MotionEventevent)事件監(jiān)聽

今天做一個(gè)自定義ViewGroup,通過addView動(dòng)態(tài)添加子控件,為了省事,直接在父控件里重寫public boolean onTouchEvent(MotionEvent event){}方法來監(jiān)聽當(dāng)前觸碰是哪個(gè)按鈕,遇到點(diǎn)問題,所以寫下來。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)桓仁免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

首先是點(diǎn)擊效果只有 MotionEvent.ACTION_DOWN,這個(gè)把返回改為return true;就行了

然后是 getX()和getRawX()的區(qū)別,這個(gè)這篇博文有寫到

http://www.cnblogs.com/foura/articles/2016881.html

總結(jié)就是:getX()是表示W(wǎng)idget相對(duì)于自身左上角的x坐標(biāo),而getRawX()是表示相對(duì)于屏幕左上角的x坐標(biāo)值(注意:這個(gè)屏幕左上角是手機(jī)屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一樣的道理

之前設(shè)置矩形一直是

rects.add(new Rect());

getChildAt(i).getGlobalVisibleRect(rects.get(i));但今天出了點(diǎn)問題,因?yàn)榻裉焓褂玫氖莇ialog主題.所以坐標(biāo)一直不對(duì),

只好直接使用 rects.add(new Rect(v.getLeft(),v.getTop(),v.getRight(),v.getBottom()));

使用子View在父View中的位置來繪制矩形,然后比較父View的getX()方法。

關(guān)于這些看著頭暈的方法的區(qū)別,主要是參考這篇,來區(qū)分哪個(gè)是相對(duì)屏幕,哪個(gè)是相對(duì)自己

http://blog.csdn.net/centralperk/article/details/7949900

尤其是這個(gè)getLeft , getTopgetBottomgetRight,  這一組是獲取子View相對(duì)在它父View里的坐標(biāo),這個(gè)的幫助。

這邊隨便貼個(gè)監(jiān)聽的方法,當(dāng)然還要完善一下才能用,解決點(diǎn)小問題

	private ArrayList rects = new ArrayList();
	private int eventX = 0;
	private int eventY = 0;
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
//		Log.e("", "_____"+event.getAction());
		if(event.getAction() == MotionEvent.ACTION_DOWN){
			eventX = (int) event.getX();
			eventY = (int) event.getY();
		}
		//判斷當(dāng)前用戶點(diǎn)擊的那一項(xiàng)
		if (event.getAction() == MotionEvent.ACTION_UP) {
			int upX = (int) event.getX();
			int upY = (int) event.getY();
			if(Math.abs(upX-eventX)<50&&Math.abs(upY-eventY)<50){
				for (int i = 0,len=getChildCount(); i < len; i++) {
					if(rects.size() < len){
						View v = getChildAt(i);
						rects.add(new Rect(v.getLeft(),v.getTop(),v.getRight(),v.getBottom()));
					}
//            		Log.e("", +upX+"+"+event.getRawX()+"__"+upY+"+"+event.getRawY()+"___"+rects.get(i));
					if(rects.get(i).contains(upX, upY)){
						Log.e("", "i__"+i);
						getChildAt(i).setSelected(true);
					}else{
						getChildAt(i).setSelected(false);
					}
				}
			}
		}
		return true;
	}

網(wǎng)頁名稱:關(guān)于Android自定義View中的onTouchEvent(MotionEventevent)事件監(jiān)聽
網(wǎng)頁地址:http://weahome.cn/article/jespge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部