編輯:關於Android編程
一、Android中的事件處理方法
事件處理:響應用戶UI動作,提高應用程序交互性
1、基於監聽的事件處理機制
2、基於回調的事件處理機制
3、Handler消息處理
前面我們已經介紹了Android事件處理方法總結-基於監聽,這裡我們總結一下Android事件處理方法總結-基於回調
二、基於回調的事件處理機制詳解
1、回調事件處理原理
監聽事件處理是事件源與事件監聽器分開的
而基於回調的事件處理UI組件不但是事件源,而且還是事件監聽器,通過組件的相關回調方法處理對應的事件
2、回調事件應用步驟
Ⅰ. 自定義View類,繼承自需要的View UI類。ex :自定義MyButton按鈕類 extends 基礎Button類
Ⅱ. 復寫回調函數。ex:public boolean onTouchEvent(MotionEvent event)
每一個事件回調方法都會返回一個boolean值,①.如果返回true:表示該事件已被處理,不再繼續向外擴散,②.如果返回false:表示事件繼續向外擴散
android.view.View類提供了很多回調方法,ex:onKeyDown監測鍵盤按下....,具體參考API文檔
3、回調事件應用示例
demo:點擊按鈕後,Toast彈出按鈕被觸碰的事件信息
自定義View類MyButton,並重寫事件回調方法
packagecom.yihui.ui;
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassMyButtonextendsButton{
privatestaticfinalStringTAG="EventCallBack";
publicMyButton(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
/*重寫onTouchEvent觸碰事件的回調方法*/
@Override
publicbooleanonTouchEvent(MotionEventevent){
Log.i(TAG,"我是MyButton,你觸碰了我:"+event.getAction());
Toast.makeText(getContext(),"我是MyButton,你觸碰了我:"+event.getAction(),0).show();
returnfalse;//返回false,表示事件繼續向外層(即父容器)擴散
}
}
布局文件xml:activity_main.xml
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="碰碰我試試"/>
Activiy,同樣也復寫了事件回調方法,測試事件的擴散
packagecom.yihui.eventhandler;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
privatestaticfinalStringTAG="EventCallBack";
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
publicbooleanonTouchEvent(MotionEventevent){
Log.i(TAG,"我是MainActivity,發現觸碰事件:"+event.getAction());
Toast.makeText(MainActivity.this,"我是MainActivity,發現觸碰事件!:"+event.getAction(),0).show();
returntrue;
}
}
測試效果:
Ps:注意Activity裡面的onTouchEvent事件被觸發了2次,是因為第一次ACTION_DOWN,第二次是ACTION_UP
智能語音技術如今越來越多的app用到了語音播報功能,例如地圖導航、天氣預報、文字閱讀、口語訓練等等。語音技術主要分兩塊,一塊是語音轉文字,即語音識別;另一塊是文字轉語音,
一個activity就好比一個網頁,此文章講解怎樣創建一個activity並且實現跳轉!一、學習創建Activity1、新建一個java類,右擊src目錄,選擇new--
在平時工作中,camera模塊是經常進行調試修改的模塊,所以熟悉camera的工作流程以及工作原理將會大大的提供工作效率,但對於整個android系統camera是個十分
自微信出現以來取得了很好的成績,語音對講的實現更加方便了人與人之間的交流。今天來實踐一下微信的語音對講的錄音實現,這個也比較容易實現。在此,我將該按鈕封裝成為一個控件,並