1. 程式人生 > >android三種方法實現監聽事件

android三種方法實現監聽事件

Android實現監聽事件的四種方式(匿名內部內實現,外部類實現,介面實現,繫結到標籤)

1. 使用匿名內部類的方式實現監聽事件

使用方法:

  1. 首先為要實現監聽的物件繫結監聽器,例如為一個Button物件繫結一個監聽器botton.setOnClickListener();
  2. 然後在setOnClickListener()方法中定義一個OnClickListener的匿名內部類,然後重寫內部類中的onClick方法。
  3. 最後在onClick方法中實現監聽事件要實現的邏輯即可。

優點有:

1.可以在當前類中複用該監聽器類

  2.可以自由訪問外部類的所有介面元件

b1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intet = new Intent(MainActivity.this,seekbar.class);
				startActivity(intet);
				//finish();
			}
			
		});


2. 使用外部類的方式實現監聽事件

使用方法:

  1. 首先要自定義一個外部類,實現OnClickListener介面,並重寫onClick方法,在onClick方法中可以定義這個外部類想實現的處理邏輯,那麼呼叫這個外部類實現監聽事件時,都可以用super來呼叫這個類中的處理邏輯。這也是使用外部類實現監聽事件的優勢所在:可以將不同監聽事件中大量重複的處理邏輯定義在這個類中,然後使用這個外部類實現監聽事件時都可以使用super關鍵字來直接呼叫,而不用重複定義,減少重複程式碼,提高程式碼質量。
  2. 為要實現監聽的物件繫結監聽器,然後在setOnClickListener()方法中使用我們自定義的外部類來實現監聽事件。
  3. 重寫onClick方法,並根據需要來決定是否需要使用super呼叫父類處理邏輯,並在onClick方法中定義自己的處理邏輯。

比較少見,其中優點為:

1.當某個事件監聽器被多個GUI介面共享,且主要是完成某種業務邏輯的實現

其中確定為:

1.不利於提高程式的內聚性

2.不能自由訪問建立GUI介面類的元件,程式設計不夠簡潔

這個類很簡單,實現OnClickListener並複寫onClick方法即可,外部類監聽點選事件實際中用的不多,但如果以後做到好幾十個按鈕點下

去要產生相同的動畫效果,就可以把動畫效果放到外部內裡面

Button buttonup=(Button)findViewById(R.id.btn_signup);
buttonin.setOnClickListener(new MyOnClicklistener() {
    public void onClick(View v) {
            //noinspection ConstantConditions
                super.onClick(v);
                Toast.makeText(MainActivity.this,"點選了登入",Toast.LENGTH_LONG).show();
 
 
            }
        });
 
buttonup.setOnClickListener(new MyOnClicklistener() {
    public void onClick(View v) {
                //noinspection ConstantConditions
                super.onClick(v);
          Toast.makeText(MainActivity.this,"點選了註冊",Toast.LENGTH_LONG).show();
            }
        });
 
class MyOnClicklistener implements View.OnClickListener {
        public void onClick(View v) {
            //讓所有使用當前外部類的點選事件的按鈕都要做出一個動作,改變button本身
            v.setAlpha(0.5f);
        }


3. 使用介面方式實現監聽事件

可以直接在Activity中定義事件處理方法

其中優點為:非常簡潔

缺點為:

1.這種形式可能造成程式結構混亂。Activity的主要職責應該是完成介面初始化;但此時還需包含事件處理器方法,從而引起混亂

2.如果activity介面類需要實現監聽器介面,讓人感覺比較怪異

public class ActivityListener extends Activity implements OnClickListener {
	private EditText show;
	private Button bn;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		show = (EditText)findViewById(R.id.show);
		bn = (Button)findViewById(R.id.bn);
		bn.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		show.setText("按鈕被單擊了!");
	}


4.直接繫結到標籤

在佈局中要傳送事件源中定義一個:

android:onClick="clickHandler"

然後在該佈局對應的Activity定義一個 void clickHandler(void source)方法



相關推薦

android方法實現事件

Android實現監聽事件的四種方式(匿名內部內實現,外部類實現,介面實現,繫結到標籤) 1. 使用匿名內部類的方式實現監聽事件 使用方法: 首先為要實現監聽的物件繫結監聽器,例如為一個Button物件繫結一個監聽器botton.setOnClickListener();。

Android方法實現按鈕點選事件

0.我們都知道Java在開發介面的時候,需要使用監聽事件,只有在寫過監聽事件之後才能夠完整的使用軟體,比如說,我們在寫了一個button之後,想點選button,然後在文字標籤中變換字型該怎麼做呢?那麼我們就需要對button這個view進行新增監聽事件,新增完監聽事件之後,

實現事件方法

package com.yuan.luotechnically.monitor; import android.app.Activity; import android.content.Dialog

Android按鈕的五點選事件處理

1、匿名內部類作為監聽器 button.setOnClickListener(new OnClickListener() { @Overridepublic void onClick(View v) {// TODO Auto-generated method stub}}

Android完全自定義控制元件並且實現事件

本篇文章帶來Android的完全自定義控制元件。載體是自定義一個開關的控制元件,並且能夠響應事件,首先我們先創一個專案,名字就叫ToggleView,修改MainActivity public class MainActivity extends Acti

aNDROID方法實現MENU

music win pup andro com 兩種方法 hao123 popu oid pOpUpWINDOW%E6%98%BE%E7%A4%BA%E7%9A%84%E9%97%AE%E9%A2%98 http://music.hao123.com/songlist/4

方法實現整型數值交換

int 異或 交換 實現 整型 數值交換 臨時 變量 a+b 臨時變量法: int a = 5; int b = 4; int temp = 0; temp = a; a = b; b = temp; 異或法: int a = 5; int b = 6; a = a^b;

刪除鏈表的倒數第N個節點(方法實現

from ++ n+1 while end != bsp -- 結點 刪除鏈表的倒數第N個節點 給定一個鏈表,刪除鏈表的倒數第 n 個節點,並且返回鏈表的頭結點。 示例: 給定一個鏈表: 1->2->3->4->5, 和 n = 2. 當刪

addEventListener() 方法事件

addEventListener()方法,監聽事件 你可以用removeEventListener() 來移除事件的監聽。 語法: addEventListener(event,function,capture); event 必須,指定事件名 function

leetCode 1號題詳解, 兩數之和的key , python3方法實現

原題如下 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以

方法實現strlen函式

      我們知道,strlen函式是計算字串長度的函式,那麼要實現strlen函式主要就是得到字串長度,那麼 怎樣才能得到字串長度呢?如果是整形的陣列,我們可以通過下標來尋找,可是這是字串,我們就要了解字串了。       &nbs

url地址資料引數轉化JSON物件(js方法實現

當我們用get方法提交表單時,在url上會顯示出請求的引數組成的字串,例如:http://localhost:3000/index.html?phone=12345678901&pwd=123123,在伺服器端我們要獲取其中的引數來進行操作,這種情況下,就要對請求過來的網址進行拆解了。下面將用3種方法

Python C/S 網路程式設計(一)之 方法實現天氣預報小程式

1. 首先明白下協議棧和庫的概念: 協議棧(Protocol Stack): 是指網路中各層協議的總和,其形象的反映了一個網路中檔案傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。 庫(Library):主要用來解析要使用的網路通訊協議,包含Python內建標準庫

Android 常用實現自定義圓形進度條 ProgressBar 及demo

           Android 自定義 進度條,一般有三種方式,最早一般使用UI給的圖片使用幀動畫,完成,後面兩種,一種是使用自定義顏色,另外一種是使用帶相近色的圖片加動畫完成。 下面具體 說一下三種方式,推薦使用第二種方式,如果這種達不到效果,或者比較高也可使用第一

Android 方式實現圓形ImageView

所有方式均繼承了ImageView 圓形圖片實現一:BitmapShader package com.open.widget; import android.content.Context; import android.graphics.Bitmap; impor

方法實現java呼叫Restful介面

1,基本介紹 Restful介面的呼叫,前端一般使用ajax呼叫,後端可以使用的方法比較多,   本次介紹三種:     1.HttpURLConnection實現     2.HttpClient實現     3.Spring的RestTemplat

斐波那契數列-java程式設計:方法實現斐波那契數列

題目要求:編寫程式在控制檯輸出斐波那契數列前20項,每輸出5個數換行 //java程式設計:三種方法實現斐波那契數列 //其一方法: public class Demo2 { // 定義三個變數方法

方法實現PCA演算法(Python)

  主成分分析,即Principal Component Analysis(PCA),是多元統計中的重要內容,也廣泛應用於機器學習和其它領域。它的主要作用是對高維資料進行降維。PCA把原先的n個特徵用數目更少的k個特徵取代,新特徵是舊特徵的線性組合,這些線性組合最大化樣本方差,儘量使新的k個特徵互不相關。關於

Android動畫實現原理及使用

Android動畫目前分為三種:Frame Animation 幀動畫,通過順序播放一系列影象從而產生動畫效果,。圖片過多時容易造成OOM(Out Of Memory記憶體用完)異常。Tween Animation 補間動畫(又叫view動畫),是通過對場景裡的物件不斷做影象

android方式實現自由移動的view

public class MoveView extends ImageView { private int x, y; private int r, l, t, b; public MoveView(Context context) { this(context, n