編輯:關於Android編程
本文將解析Android View的onClick事件的回調機制,通過這個設計,可以明白接口和對象組合是非常重要的。記得我們在寫Button的onClick事件是往往會這樣來寫:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });
首先定義個類,姑且就叫它BaseView,跟Android SDK裡面的View對應
package com.example.callbacktest; public class BaseView { interface OnClickMyListener { public void onClick(BaseView view); }; }該類裡面有個內部接口,叫OnClickMyListener在,這與Android SDK中OnClickListener對應。接下來寫兩個BaseView的子類ViewA、ViewB
package com.example.callbacktest; public class ViewA extends BaseView{ private OnClickMyListener mLinstener ; public void click(){ mLinstener.onClick(this); } public void setOnClickMyListener(OnClickMyListener linstener){ mLinstener = linstener ; } }
package com.example.callbacktest; public class ViewB extends BaseView{ private OnClickMyListener mLinstener ; public void click(){ mLinstener.onClick(this); } public void setOnClickMyListener(OnClickMyListener linstener){ mLinstener = linstener ; } }
package com.example.callbacktest; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewA viewA = new ViewA(); ViewB viewB = new ViewB(); viewA.setOnClickMyListener(new BaseView.OnClickMyListener() { @Override public void onClick(BaseView view) { Log.e("MainActivity","viewA-->onClick"); } }); viewB.setOnClickMyListener(new BaseView.OnClickMyListener() { @Override public void onClick(BaseView view) { Log.e("MainActivity","viewB-->onClick"); } }); Log.e("MainActivity","now click A:"); viewA.click(); Log.e("MainActivity","now click B:"); viewB.click(); } }
這裡的ViewA、ViewB有自己的click方法,這個方法按理由來說不應該在主程序中主動調用,這個方法應該是屏幕捕捉到一個點擊屏幕的動作之後轉換成坐標,如果這個坐標對應的是該View,那麼才調用它的click方法,也就是說是屏幕獲取點擊事件,來觸發View的click事件,進而調用了事件監聽器的onClick方法,而onClick方法是在外部實現的,所以就會調用onClick裡面的打印信息。這就是整個調用的流程。
又到周末一個人侘在家裡無事可干,這就是程序員的悲哀啊。好了我們利用周末的時間繼續介紹android apk防止反編譯技術的另一種方法。一、對抗JD-GUI原理通常在對ap
android 4.0以後EditText的風格默認變成了只有下面有一條橫線。如圖: 如果想要變成原來的風格,只需要在EditText屬性中加入an
1.簡介 對於android中的ListView刷新機制,大多數的程序員都是很熟悉的,修改或者添加adapter中的數據源之後,然後調用notifyDataSetChan
1、概述TabLayout是在2015年的google大會上,google發布了新的Android Support Design庫的新組件之一,以此來全面支持Materi