Android 開發的幾點小問題

來源:互聯網
上載者:User

1.ImageView 每隔100ms更換一張顯示圖片過程中出現OOM錯誤解決方案:

BitmapDrawable bitmapDrawable = (BitmapDrawable) image.getDrawable();  
// 如果圖片還未回收,先強制回收該圖片  
if (bitmapDrawable != null && !bitmapDrawable.getBitmap().isRecycled()){  
    bitmapDrawable.getBitmap().recycle();  
}  
 image.setImageBitmap(BitmapFactory.decodeStream(assetFile)); 

2.assets檔案夾下面的檔案名稱不能包含中文。

Android 基於Linux系統,Linux 允許在檔案名稱中使用除上述符號之外的其它符號, 但並不建議使用者這樣做。如果Windows 下面檔案名稱包含中文字元的檔案,複製到Android項目的assets檔案夾下面,運行此Android項目會報錯,去掉檔案名稱中的特殊字元就OK了。

3. 自訂View組件時候,如果重寫onTouchEvent方法,不要返回return super.onTouchEvent(event),應該修改為return true,原因是:
(1)父類的onTouchEvent(event)方法可能沒有做任何處理,但是返回了false。
( 2)一旦返回false,在該方法中再也不會收到MotionEvent.ACTION_MOVE及MotionEvent.ACTION_UP事件。 

4.關於SuifaceView畫圖: Access to the underlying surface is provided via the SurfaceHolder interface, which can be retrieved by callinggetHolder(). 通過getHolder()方法得到SurfaceHolder 介面: SurfaceHolder surfaceHolder = getHolder();

SurfaceView如何畫圖呢?

(1)對Canvas進行加鎖

//擷取canvas執行個體  
Canvas canvas = surfaceHolder.lockCanvas();  

(2)進行相應的畫圖操作

canvas.drawCircle(float cx, float cy, float radius, Paint paint);

(3).對Canvas進行解鎖,將畫好的畫布提交,也就是進行重畫
 surfaceHolder.unlockCanvasAndPost(canvas);  

View與SurfaceView區別

1.SurfaceView是View的子類。

2.View缺乏緩衝機制,只能整個View更新;SurfaceView有雙緩衝機制,可以局部更新;

3.SurfaceView是在一個新起的單獨線程中可以重新繪製畫面,而View必須在UI的主線程中更新畫面。

如果更新頻率頻繁,用SurfaceView,否則用View。

如果有疏漏,請您指正。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.