在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Android事件處理
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢
Android AutoCompleteTextView(自動完成)實例
Android 資源組織和訪問
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過濾器
Android LinearLayout
Android登錄實例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動畫)實例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對話框)
Android圖片效果
Android內(nèi)部存儲
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍(lán)牙)實例
Android RelativeLayout
Android最佳實踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android事件處理

事件是一種有用來收集用戶與應(yīng)用程序互動數(shù)據(jù)的互動組件,如按鍵或觸摸屏等放置事件,因為每個事件從Android框架維護事件隊列先入先出(FIFO)基礎(chǔ)上的隊列??梢栽诔绦蛑胁东@這些事件,按要求并采取適當(dāng)?shù)膭幼鳌?/p>

有以下三個概念涉及到Android事件管理:

  • 事件監(jiān)聽器: 主要涉及建立一個Android的GUI視圖類,View類提供了一些事件監(jiān)聽器。事件監(jiān)聽器是對象接收通知在事件發(fā)生時。

  • 事件監(jiān)聽器注冊: 事件注冊事件處理程序被注冊了事件偵聽器的過程,使該處理調(diào)用的事件偵聽器觸發(fā)事件。

  • 事件處理程序: 當(dāng)一個事件發(fā)生時,已注冊的事件和事件監(jiān)聽器,事件監(jiān)聽器調(diào)用事件處理程序,這是實際處理事件的方法。

事件偵聽器和事件處理程序

事件處理程序 事件監(jiān)聽器說明
onClick() OnClickListener()
當(dāng)用戶點擊任意或觸摸或焦點事件像按鈕,文字,圖片等,將使用onClick()事件處理程序來處理任何部件的事件
onLongClick() OnLongClickListener()
當(dāng)用戶點擊或觸摸或焦點事件像按鈕,文本,圖像等,為1秒以上的任何插件時被調(diào)用。使用onLongClick()事件處理程序來處理這樣的事件
onFocusChange() OnFocusChangeListener()
當(dāng)控件失去焦點時被調(diào)用。用戶進入離開視圖項目。使用onFocusChange()事件處理程序來處理這樣的事件
onKey() OnFocusChangeListener()
當(dāng)用戶焦點并按下或釋放裝置上的硬件鍵時被調(diào)用。將使用onKey()事件處理程序來處理這樣的事件
onTouch() OnTouchListener()
當(dāng)用戶按下該鍵時及釋放鍵,或在屏幕上的任何移動手勢時被調(diào)用。使用onTouch()事件處理程序來處理這樣的事件
onMenuItemClick() OnMenuItemClickListener()
當(dāng)用戶選擇一個菜單項時被調(diào)用。使用onMenuItemClick()事件處理程序來處理這樣的事件

還有更多可用作為View類如:OnHoverListener,OnDragListener 等,應(yīng)用程序可能需要一部分的事件偵聽器。因此,建議參考官方Android應(yīng)用程序開發(fā)文檔,開發(fā)一個復(fù)雜的應(yīng)用程序。

注冊事件監(jiān)聽器:

事件注冊事件處理程序被注冊事件偵聽器的過程,使處理時調(diào)用事件偵聽器處理事件。雖然有一些方法注冊可以任何事件的事件偵聽器,但要列出只前3種方式,可以根據(jù)實際情況使用。

  • 使用匿名內(nèi)部類

  • Activity 活動類實現(xiàn)Listener接口

  • 使用布局文件 activity_main.xml 直接指定事件處理程序(方法)

下面將提供三種情景的詳細(xì)的例子:

事件處理舉例

使用匿名內(nèi)部類的事件監(jiān)聽器注冊

在這里,將創(chuàng)建一個匿名的執(zhí)行監(jiān)聽,如果每個類只有一個單控制器,將參數(shù)傳遞給事件處理程序。在這種方法中的事件處理方法可以訪問私有數(shù)據(jù)的活動。沒有提及需要調(diào)用到活動。

但是,如果聲明一個以上處理程序的控制器,剪切和粘貼代碼的處理程序和處理程序的代碼很長,代碼更難維護。

以下是簡單的步驟來展示我們將如何利用獨立的 Listener類 注冊并捕獲點擊(click)事件。類似的方式,可以實現(xiàn)所需的任何其他事件類型的偵聽。

步驟 描述
1 使用Android Studio創(chuàng)建一個Android應(yīng)用程序項目,將其命名為:EventDemo
2 修改 src/MainActivity.java 程序文件,以添加 click事件偵聽器并處理程序定義的兩個按鈕
3 修改 res/layout/activity_main.xml 文件的默認(rèn)內(nèi)容包括Android的UI控件
4 定義res/values/strings.xml 文件所需的常量
5 運行該應(yīng)用程序啟動Android模擬器并驗證應(yīng)用程序所做的修改結(jié)果

以下是主 activity 文件src/com.yiibai.eventdemo/MainActivity.java 的內(nèi)容。這個文件可以包括每個生命周期的根本方法。

package com.yiibai.eventdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //--- find both the buttons---
        Button sButton = (Button) findViewById(R.id.button_s);
        Button lButton = (Button) findViewById(R.id.button_l);
        
        // -- register click event with first button ---
        sButton.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // --- find the text view --
               TextView txtView = (TextView) findViewById(R.id.text_id);
               // -- change text size --
               txtView.setTextSize(14);
           }
        });
        
        // -- register click event with second button ---
        lButton.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // --- find the text view --
               TextView txtView = (TextView) findViewById(R.id.text_id);
               // -- change text size --
               txtView.setTextSize(24);
           }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

下面是 res/layout/activity_main.xml 文件的內(nèi)容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >


    <Button 
    android:id="@+id/button_s"
    android:layout_height="wrap_content" 
    上一篇:SimpleCursorAdapter下一篇:Android ProgressDialog