android繼承view
① android 繼承viewGroup自定義了一個視圖,那個自定義的視圖在activity的oncrate方法裡面添加子。。
添加的子View,如果用hierarchyviewer工具可以看到,而你看不到,那麼可能原因有:
是你添加子View的時候裡面已經有View了,並被蓋住了。可以先調用removeAllViews()試下。
oncreate能看到,onresume不能看到,調用setContentView()方法試下,應該是沒有刷新當前界面
② android自定義控制項繼承View,其中父類的三個構造方法有什麼區別
android開發者網站上有相關的說明文檔: public View (Context context)是在java代碼創建視圖的時候被調用,如果是從xml填充的視圖,就不會調用這個 public View (Context context, AttributeSet attrs)這個是在xml創建但是沒有指定style的時候被調用 public View (Context context, AttributeSet attrs, int defStyle)這個不用說也懂了吧
③ android問題 繼承view類的一個類裡面定義的width,height,margin值從哪獲取
可以通過調用this.getHeight等方法獲取定義此控制項時設置的寬高等屬性
④ android中的View是做什麼的
View類是Android的一個超類,這個類幾乎包含了所有的屏幕類型。每一個View都有一個用於繪圖的畫布,這個畫布可以進行任意擴展。在游戲開發中葉可以自定義視圖(View),這個畫布的功能更能滿足我們在游戲開發中的需要。在Android中,任何一個View類都只需重寫onDraw 方法來實現界面顯示,自定義的視圖可以是復雜的3D實現,也可以是非常簡單的文本形式等。
游戲中最重要的就是需要與玩家交互,比如鍵盤輸入、觸筆點擊事件,我們如何來處理這些事件呢?Android中提供了 onKeyUp、onKeyDown、onKeyMultiple、onKeyPreIme、onTouchEvent、onTrackballEvent等方法,可以輕松地處理游戲中的事件信息。所以,在繼承View時,需要重載這幾個方法,當有按鍵按下或彈起等事件時,按鍵代碼自動會傳輸給這些相應的方法來處理。
游戲的核心是不斷地繪圖和刷新界面,圖我們已經通過onDraw 方法繪制了,下面來分析如何刷新界面。Android中提供了 invalidate 方法來實現界面刷新,注意,invalidate 不能直接在線程中調用, 就是不可以在子線程中調用明白乎?因為它違背了 Android的單線程模型:Android UI操作並不是線程安全的,並且這些操作必須在UI 線程中執行,因此Android中最常用的方法就是利用Handler來實現UI線程的更新。 其實用 AsyncTask 也可以。
⑤ android畫圖一定要繼承view或surfaceView,在線程里一直畫嗎
第一,不一點用surfaceview,亦可繼承view;第二,是不是畫一次,或者多次,由你代碼控制第三,ondraw是一個回調函數,canvas為空,證明你調用有錯
查看原帖>>
⑥ Android 繼承View 覆寫onKeyDown 不響應
android的窗口手勢有傳遞機制, windowmanager-----> activity -----> view
onkeydown 首先被 activity 攔截了,沒有返回,你嘗試在 activity 的onkeydown方法里列印log 就可以看到有執行,所以被這個方法攔截了,就沒法執行到你view的onkeydown方法里。
解決方法有: 1 在activity 的onkeydown方法里 return 之前 讓view 獲取onkeydown焦點 ,
Game_View view = new Game_View (this) ;
view.onKeyDown(keyCode, event);
return super.onKeyDown(keyCode, event);
2 攔截activity的onkeydown手勢,讓它進入到下層view,這種方法我沒試,理論可行
⑦ android中,繼承view為什麼卻拿不到protected的
1.繼承view訪問scroll?你怎麼訪問的?
2.你直接訪問屬性肯定不行的 上面的說的很清楚了。。包內可見、、、
3.api中
4.final int getScrollX()
5.Return the scrolled left position of this view.
6.這個方法可以得到
⑧ android自定義控制項必須繼承view嗎
需要看你實現什麼效果。一般自定義控制項可以用2種方式:
將現有的控制項封裝起來,作為一個通用的組件來使用,此時只能用代碼的形式調用,無法再xml中引用,例如將textView和Button封裝為一個登錄控制項。
繼承View或者ViewGroup,其實ViewGroup也是繼承的View。然後依次實現onMeasure()、onLayout()、onDraw(),
onMeasure -- 負責測繪控制項的大小
onLayout -- 負責控制項中子元素擺放的位置
onDraw -- 負責控制項和子控制項的繪制,使其顯示在屏幕中
一些設計和實現較好的自定義View,一般還需要考慮事件的傳遞、動畫的控制、touch事件的處理等
⑨ android中 自定義了一個MyView(繼承自View類) 在xml布局文件中作為組件添加(無錯誤提示)但運行後報錯
1、自定義view需要注意
構造函數
,所有的xml布局,初始化時構造函數使用的都是 (Context context, AttributeSet attrs) {兩個參數的。如果沒有該構造函數會報錯。
2、如果有自定義屬性,則需要在當前xml中引入工程包名,否則自定義屬性會報錯
這個問題報錯的願意是第一個,構造函數使用錯誤。增加構造函數就能解決問題。
比如:
public class MyView extends View{//下面2個構造函數都加上
public MyView(Context context){
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
⑩ Android自定義控制項按照對View及其子類的依賴程度可以分為哪三種
摘要 二、繼承控制項