package com.example.testview;
import android.content.context;
import android.util.attributeset;
import android.util.log;
import android.view.motionevent;
import android.widget.button;
public class custombutton extends button
*/public custombutton(context context, attributeset attrs)
int mlastx;
int mlasty;
@override
public boolean ontouchevent(motionevent event)
mlastx = x;
mlasty = y;
// getparent().requestdisallowintercepttouchevent(false);
return true;
}@override
protected void onlayout(boolean changed, int left, int top, int right,
int bottom)
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
@override
public boolean dispatchtouchevent(motionevent event)
}
package com.example.testview;
import android.content.context;
import android.util.attributeset;
import android.util.log;
import android.view.motionevent;
import android.widget.framelayout;
public class customviewgroup extends framelayout
/*** 外部攔截法和內部攔截法, 父和子
*/@override
public boolean dispatchtouchevent(motionevent ev)
//只有viewgroup特有的事件,就只執行一次,down事件執行
@override
public boolean onintercepttouchevent(motionevent ev)
else
case motionevent.action_up:
return false;
default:
break;
}// todo auto-generated method stub
log.e("testview","父容器攔截");
return false; //如果設定攔截,除了down,其他都是父類處理
}@override
public boolean ontouchevent(motionevent event)
/* log.e("testview","父容器處理");*/
return false;
}}
首先我們自定義2個類,乙個是子view,另乙個是父view, 子可能是個listview,父可能是乙個scrollview.
滑動衝突分多種,有可能是同方向的滑動,也可能是水平和豎直方向的。那為什麼會滑動衝突呢,關鍵是2個類都接到了同樣的事件,解決的思路就是同一時刻只能有乙個view處理motionevent事件,解決方法由2種
外部攔截法和內部攔截法
1.外部,故名思議是在父view的onintercepttouchevent處理.
它針對3中不同的事件做處理,
對於down, 返回false,除非你希望那個讓父view完全處理這3個事件。由於這裡是false.所以同一事件序列的其他2個事件父view肯定能執行到(除非設定乙個tag),
對於move,看業務情況,返回true代表父類來消耗,false則表示子類,
對於up,返回false.除非你想讓子view的click這種都無法用。
2.內部,重寫子元素的dispatchtouchevent方法。預設情況下父view可以寫成除了down,其他都攔截,然後在子view裡用parent,requestdisallowintercepttouchevent()
安卓遇到的一些問題
1.frament 使用靜態的時候在布局中必須給fragment加id 否則報錯 2.在使用 bridgewebview時候安卓js雙方都得初始化 無論怎樣形式的互動,js 必須要初始化jsbridge bridge.init function message,responsecallback co...
安卓一些硬體相關的解釋
1 解釋一下線刷和雙清 2 一些英文解釋 主介面reboot system now 重啟手機 刷機完畢選擇此項就能重新啟動系統 wipe data factory reset 清除使用者資料並恢復出廠設定 刷機前必須執行的選項 wipe cache partition 清除系統快取 刷機前執行 系統...
安卓開發使用Bmob遇到的一些問題及解決辦法
最近在做安卓的大作業,在資料庫方面遇到了很多困難,最後決定使用bmob雲資料庫作為後端。在按照官方文件將bmob sdk配置到android studio和初始化bmob時,出現了很多問題,下面記錄了我在使用bmob時的問題和一些解決方案 android studio版本為3.6,專案使用的andr...