android介面回調
❶ android 按鈕介面回調是怎麼回到主線程的
SurfaceView是View的子類,它內嵌了一個專門用於繪制的Surface,你可以控制這個Surface的格式和尺寸,Surfaceview控制這個Surface的繪制位置。surface是縱深排序(Z-ordered)的,說明它總在自己所在窗口的後面。SurfaceView提供了一個可見區域,只有在這個可見區域內的surface內容才可見。surface的排版顯示受到視圖層級關系的影響,它的兄弟視圖結點會在頂端顯示。這意味者 surface的內容會被它的兄弟視圖遮擋,這一特性可以用來放置遮蓋物(overlays)(例如,文本和按鈕等控制項)。注意,如果surface上面有透明控制項,那麼每次surface變化都會引起框架重新計算它和頂層控制項的透明效果,這會影響性能。 SurfaceView默認使用雙緩沖技術的,它支持在子線程中繪制圖像,這樣就不會阻塞主線程了,所以它更適合於游戲的開發。 SurfaceView的使用 首先繼承SurfaceView,並實現SurfaceHolder.Callback介面,實現它的三個方法:surfaceCreated,surfaceChanged,surfaceDestroyed。 surfaceCreated(SurfaceHolder holder):surface創建的時候調用,一般在該方法中啟動繪圖的線程。 surfaceChanged(SurfaceHolder holder, int format, int width,int height):surface尺寸發生改變的時候調用,如橫豎屏切換。 surfaceDestroyed(SurfaceHolder holder) :surface被銷毀的時候調用,如退出遊戲畫面,一般在該方法中停止繪圖線程。 還需要獲得SurfaceHolder,並添加回調函數,這樣這三個方法才會執行。 SurfaceView實戰 下面通過一個小demo來學習SurfaceView在實際項目中的使用,繪制一個精靈,該精靈有四個方向的行走動畫,讓精靈沿著屏幕四周不停的行走。
❷ Android 自定義控制項中實現介面回調時為什麼影響界面繪線
SurfaceView是View的子類,它內嵌了一個專門用於繪制的Surface,你可以控制這個Surface的格式和尺寸,Surfaceview控制這個Surface的繪制位置。surface是縱深排序(Z-ordered)的,說明它總在自己所在窗口的後面。SurfaceView提供了一個可見區域,只有在這個可見區域內的surface內容才可見。surface的排版顯示受到視圖層級關系的影響,它的兄弟視圖結點會在頂端顯示。這意味者 surface的內容會被它的兄弟視圖遮擋,這一特性可以用來放置遮蓋物(overlays)(例如,文本和按鈕等控制項)。注意,如果surface上面有透明控制項,那麼每次surface變化都會引起框架重新計算它和頂層控制項的透明效果,這會影響性能。
SurfaceView默認使用雙緩沖技術的,它支持在子線程中繪制圖像,這樣就不會阻塞主線程了,所以它更適合於游戲的開發。
SurfaceView的使用
首先繼承SurfaceView,並實現SurfaceHolder.Callback介面,實現它的三個方法:surfaceCreated,surfaceChanged,surfaceDestroyed。
surfaceCreated(SurfaceHolder holder):surface創建的時候調用,一般在該方法中啟動繪圖的線程。
surfaceChanged(SurfaceHolder holder, int format, int width,int height):surface尺寸發生改變的時候調用,如橫豎屏切換。
surfaceDestroyed(SurfaceHolder holder) :surface被銷毀的時候調用,如退出遊戲畫面,一般在該方法中停止繪圖線程。
還需要獲得SurfaceHolder,並添加回調函數,這樣這三個方法才會執行。
SurfaceView實戰
下面通過一個小demo來學習SurfaceView在實際項目中的使用,繪制一個精靈,該精靈有四個方向的行走動畫,讓精靈沿著屏幕四周不停的行走。
❸ android 回調方法怎麼寫
package com.smart;
/**
* 定義回調介面
*/
public interface CallBack {
void execute();
}
package com.smart;
/**
* 工具類
*/
public class Tools {
public void test(CallBack callBack){
long begin = System.currentTimeMillis(); //測試起始時間
callBack.execute();///進行回調操作
long end = System.currentTimeMillis(); //測試結束時間
System.out.println("[use time]:" + (end - begin)); //列印使用時間
}
public static void main(String[] args){
Tools tools = new Tools();
tools.test(new CallBack(){
public void execute() {
//A.method(); 測試類A的某個方法執行的時間
//B.method(); 測試類B的某個方式執行的時間
System.out.print("回調" );
}
});
}
}
package com.smart;
/**
* 工具類
*/
public class Tools {
public void test(CallBack callBack){
long begin = System.currentTimeMillis();//測試起始時間
callBack.execute();///進行回調操作
long end = System.currentTimeMillis();//測試結束時間
System.out.println("[use time]:" + (end - begin));//列印使用時間
}
public static void main(String[] args){
Tools tools = new Tools();
tools.test(new CallBack(){
public void execute() {
//A.method(); 測試類A的某個方法執行的時間
//B.method(); 測試類B的某個方式執行的時間
System.out.print("回調");
}
});
}
}
❹ Android 介面回調報錯空指針,請問大佬我這樣處理哪裡有問題嗎
打log 看下 public FileStorage(。。。)這個有沒有被調用到,如果調用到的話,傳過來的storageback的值是多少。
❺ android回調函數為什麼要先判別介面是否為空
因為通常情況下
這些回調介面都是只在類中聲明,並沒有在類中實例
也就是說用戶可能並沒有給你這個回調介面賦值,或者說用戶根本就不想回調
這個時候,這個介面可能為null
如果不先判斷是否為null,程序回調的時候,就會拋出空指針異常
❻ android 能用類代替介面實現回調嗎
可以,不過介面是一種規范,能讓一個類的拓展性更強,所以還是盡量使用介面,如果你不能理解的話那就抄別人的代碼,等到你有了一定的開發經驗之後你就會理解為什麼要這樣做
❼ Android動態載入調用方法時方法的參數裡面帶有介面,如何獲取介面的回調
在Android中到處可見介面回調機制,尤其是UI事件處理方面,本文給大家介紹android介面回調機制,涉及到android介面回調相關知識,對本文感興趣的朋友可以參考下本篇文章
在使用介面回調的時候發現了一個經常犯的錯誤,就是回調函數裡面的實現有可能是用多線程或者是非同步任務去做的,這就會導致我們期望函數回調完畢去返回一個主函數的結果,實際發現是行不通的,因為如果回調是多線程的話你是無法和主函數同步的,也就是返回的數據是錯誤的,這是非常隱秘的一個錯誤。那有什麼好的方法去實現數據的線性傳遞呢?先介紹下回調機制原理。
回調函數
回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用為調用它所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
開發中,介面回調是我們經常用到的。
介面回調的意思即,注冊之後並不立馬執行,而在某個時機觸發執行。
舉個例子:
A有一個問題不會,他去問B,B暫時解決不出來,B說,等我(B)解決了再告訴你(A)此時A可以繼續先做別的事情。
那麼就只有當B解決完問題後告訴A問題解決了,A才可以能解決這個問題。
代碼中比如最常用的:
一個Activity中給按鈕一個介面回調方法,只有用戶點擊了這個按鈕,告訴按鈕被點擊了,才會執行按鈕介面回調的方法
❽ android怎麼在popupwindow中實現介面回調
public B() {
// TODO Auto-generated constructor stub
//怎麼實例化C啊
//c=new ??
c.in(100);
}
答案就是改一下
public B(C imp) {
c = imp;
}
然後A裡面初始化彈窗的時候把自己傳進去。
new B(this);
❾ android 介面回調一般怎麼用
java">.Callback,KeyEvent.Callback,
AccessibilityEventSource{
/**
*.Thisfieldshouldbemade
*private,soitishiddenfromtheSDK.{@hide}
*/
;
/**
*.Ifthisview
*isnotclickable,itbecomesclickable.
*
*@paraml
*Thecallbackthatwillrun
*
*@see#setClickable(boolean)
*/
publicvoidsetOnClickListener(OnClickListenerl){
if(!isClickable()){
setClickable(true);
}
getListenerInfo().mOnClickListener=l;
}
/**
*.
*/
{
/**
*Calledwhenaviewhasbeenclicked.
*
*@paramv
*Theviewthatwasclicked.
*/
voidonClick(Viewv);
}
}