編輯:關於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防止反編譯系列:如何對抗JD-GUI
又到周末一個人侘在家裡無事可干,這就是程序員的悲哀啊。好了我們利用周末的時間繼續介紹android apk防止反編譯技術的另一種方法。一、對抗JD-GUI原理通常在對ap
Android EditText只有下面有一條橫線問題
android 4.0以後EditText的風格默認變成了只有下面有一條橫線。如圖: 如果想要變成原來的風格,只需要在EditText屬性中加入an
android:ListView的局部刷新
1.簡介 對於android中的ListView刷新機制,大多數的程序員都是很熟悉的,修改或者添加adapter中的數據源之後,然後調用notifyDataSetChan
android M 新控件TabLayout 方便快捷實現選項卡功能
1、概述TabLayout是在2015年的google大會上,google發布了新的Android Support Design庫的新組件之一,以此來全面支持Materi