編輯:關於Android編程
前陣子要的工作是給桌面(Launcher啟動器,其實也是一個activity)添加一個觸摸特效(一個View),而這個特效是每次觸碰都會有,不管你在桌面上做什麼操作都會顯示特效!之前一直摸索著不知道如何入手,後來慢慢的實驗之後才知道有個android觸碰消息傳遞機制。自己摸索的確很慢,要是早點知道這個機制那將會事半功倍。
用戶的每次觸碰(onClick,onLongClick,onScroll,etc.)都是由一個ACTION_DOWN+n個ACTION_MOVE+1個ACTION_UP組成的,用戶觸碰必先有個ACTION_DOWN響應,用戶觸碰結束必然會有個ACTION_UP。(當然如果在途中被攔截,就可能不會有了!)那麼View是如何分發消息和攔截消息呢?
1.View及其子類都會有的兩個方法:
public boolean dispatchTouchEvent(MotionEvent ev) 這個方法用來分發TouchEvent
public boolean onTouchEvent(MotionEvent ev)
這個方法用來處理TouchEvent
2.特殊的View子類ViewGroup則還有一個方法:
public
boolean onInterceptTouchEvent(MotionEvent ev) 這個方法用來攔截TouchEvent
3.分發
dispatchTouchEvent
收到觸碰,則向最外層的View傳遞消息,再向子層的View分發
4.攔截:
onInterceptTouchEvent 攔截返回true表示要攔截消息,不要再向子View傳遞(這裡的子View不是繼承關系,而是包容關系)。返回false則表示不攔截消息,可以繼續向下一層級的View傳遞消息,子View將可以dispatchTouchEvent 收到觸碰消息再分發消息
5.消息處理:
onTouchEvent
處理事件,攔截了消息,或者是最後一個收到消息的View調用此方法來處理事件,若返回true,則表示正確接收並處理。若返回false則表示沒有被處理,將向父View傳遞(這裡的父View不是繼承關系,而是包容關系)
6.舉例示意圖及手稿
先看看效果圖:activity_main.xml <RelativeLayout xmlns:android=http://schemas.android
程序實現功能:播放視頻,右側上下滑動改變亮度,左側上下滑動改變音量。現在我們來記住幾句重要的屬性清單文件,強制橫屏android:screenOrientation=&r
和Android UI layout一樣,我們也可以在XML中定義應用程序的菜單。通過在菜單的onCreateOptionsMenu方法中膨脹菜單layout。這樣做會使
搭建JAVA開發環境根據操作系統分為x86或x64位的,下載jdk1.8以上的版本,本機安裝時的java版本:jdk-8u45-windows-x64.exe配置JAVA