編輯:關於Android編程
回調函數可以把調用者與被調用者分開,調用者不關心誰是被調用者,調用者只需知道具有特定原型和限制條件的被調函數。
1.定義一個回調函數;
2.提供函數實現的一方在初始化的時候,將回調函數接口實例化提交給調用者;
3.當特定的事件或條件發生的時候,調用者使用接口調用回調函數對事件進行處理。
看到過一句寫的比較好的描述:A類中調用B類的某個方法C,然後B類中反過來調用A類的方法D,D這個方法就叫回調方法
先引用一個Android源碼中經典的例子:
//接口類, B類實現接口,A類調用接口
public interface OnClickListener {
void onClick(View v);
}
//相當於A類
public class MainActivity extends Activity implements OnClickListener{
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1);
// A類實例化接口
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 回調函數
}
}
// 相當於B類
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
// 接口實例
protected OnClickListener mOnClickListener;
// 接口實例化
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
mOnClickListener = l;
}
public boolean performClick() {
if (mOnClickListener != null) {
//B類調用A類的實現方法
mOnClickListener.onClick(this);
return true;
}
return false;
}
}
上面的例子寫的很清楚,這裡我用markdown做個圖表示:
一直對View的事件分發機制不太明白,在項目開發中也遇到過,在網上也找到一些解決問題方法,但是其原理並不太了解,現在辭職了有時間,今天寫寫View的事件分發,結合andr
4AppBarLayout滑動原理在CoordinatorLayout的measure和layout裡,其實介紹過一點AppBarLayout,這篇將重點講解AppBar
在Android native編寫代碼時,會經常接觸到sp、wp,sp並不是smart pointer的意思,而是strong point;wp就是weak point
1.Android程序的基本組織結構:1)src: src目錄是放置我們所有Java代碼的地方2)gen: 自動生成的,主要有R.java,項目中添加的任何資源都會在其中