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

鍍金池/ 教程/ Android/ Android事件處理
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實(shí)例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢(shì)
Android AutoCompleteTextView(自動(dòng)完成)實(shí)例
Android 資源組織和訪問(wèn)
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過(guò)濾器
Android LinearLayout
Android登錄實(shí)例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動(dòng)畫(huà))實(shí)例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對(duì)話框)
Android圖片效果
Android內(nèi)部存儲(chǔ)
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍(lán)牙)實(shí)例
Android RelativeLayout
Android最佳實(shí)踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實(shí)例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開(kāi)發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動(dòng)代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android事件處理

事件是一種有用來(lái)收集用戶與應(yīng)用程序互動(dòng)數(shù)據(jù)的互動(dòng)組件,如按鍵或觸摸屏等放置事件,因?yàn)槊總€(gè)事件從Android框架維護(hù)事件隊(duì)列先入先出(FIFO)基礎(chǔ)上的隊(duì)列??梢栽诔绦蛑胁东@這些事件,按要求并采取適當(dāng)?shù)膭?dòng)作。

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

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

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

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

事件偵聽(tīng)器和事件處理程序

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

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

注冊(cè)事件監(jiān)聽(tīng)器:

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

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

  • Activity 活動(dòng)類(lèi)實(shí)現(xiàn)Listener接口

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

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

事件處理舉例

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

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

但是,如果聲明一個(gè)以上處理程序的控制器,剪切和粘貼代碼的處理程序和處理程序的代碼很長(zhǎng),代碼更難維護(hù)。

以下是簡(jiǎn)單的步驟來(lái)展示我們將如何利用獨(dú)立的 Listener類(lèi) 注冊(cè)并捕獲點(diǎn)擊(click)事件。類(lèi)似的方式,可以實(shí)現(xiàn)所需的任何其他事件類(lèi)型的偵聽(tīng)。

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

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

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