我有一個位圖對象,並希望將其渲染爲具有不同透明度級別的畫布對象(即使整個位圖部分透視)。例如,我在一個遊戲中繪製精靈(繪製在位圖背景的頂部),我想從不透明變爲不可見。我可以做到這一點,而不必訴諸於OpenGL?使用畫布繪製半透明位圖(Android)
8
A
回答
-1
回顧的Android DOC(看起來基於JSE用完全替代GUI),以下將得到你一個alpha通道支承圖像:
Bitmap bmp=createBitmap(100,100,Bitmap.Config.ARGB_8888);
只要源位圖是α-支持,你應該能夠將它繪製到另一個位圖上並使其具有alpha值。爲了淡出它,你需要用一些合適的延遲(但是從一個定時器驅動的事件,而不是在一個循環中,除非Android的渲染系統與其他Java非常不同)重複繪製圖像,操縱alpha通道每個連續油漆上的每個像素。
// Make image more transparent by 50%
int[] pxls=new int[100*100];
bmp.getPixels(pxls,0,100,0,0,100,100);
for(int xa=0,len=pxl.length; xa<len; xa++) {
int alp=(pxls[xa] & 0xFF000000);
alp<<1;
pxls[xa]=(alp | (pxls[xa] & 0x00FFFFFF);
}
bmp.setPixels(pxls,0,100,0,0,100,100);
注意事項1:我從JavaDoc原位寫了這段代碼;它沒有被編譯或測試。注意事項2:如果硬件設備的顏色分辨率不支持Alpha通道(通常稱爲32位顏色),則將任何圖像繪製到底層圖形系統可能乾脆忽略alpha通道)。但是在之前在後臺緩衝映像上進行的任何合成應該受到尊重。關鍵是你可能有使用雙緩衝繪畫進行alpha混合,同時不受底層設備功能/配置的影響。
12
您應該能夠定義補間動畫並將該動畫應用於imageView。 XML資源將類似於以下(名爲fade_animation.xml):
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="100" />
那麼你會加載和這部動畫應用到您的自定義的ImageView時準備:
ImageView sprite = (ImageView) findViewById(R.id.sprite);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_animation);
sprite.startAnimation(animation);
還有其他的選擇太。如果你正在使用位圖和你不想做一個動畫,這時你可以手動減少每一幀的Alpha值,有點像這樣:
paint.setAlpha(100);
canvas.drawBitmap(spriteImage, left, top, paint);
你有沒有嘗試任何這些選項?
相關問題
- 1. android如何繪製半透明的畫布上的位圖
- 2. 用半透明視圖繪製陰影
- 3. Python&半透明畫布
- 4. Javascript HTML5畫布繪製透明圓圈
- 5. 在畫布上繪製透明形狀
- 6. 用半透明PNG遮罩畫布
- 7. 帶半透明(半透明)帶的繪製路徑
- 8. Android旋轉位圖並繪製畫布
- 9. 用ImageMagick繪製半透明線條
- 10. 繪製半透明可繪製在Android中,但黑邊
- 11. 在Android中使用OpenGL繪製半透明紋理
- 12. 透明圖像始終在畫布上。背後繪製透明圖像
- 13. 畫布上的半透明橡皮刷
- 14. Android無法在畫布上繪製透明矩形
- 15. 在wxwidgets中繪製半透明窗口
- 16. 如何繪製半透明白線?
- 17. 如何繪製半透明的NSTableRowView?
- 18. 繪製半透明的矩形wxWidgets的
- 19. 從位圖或畫布的Android繪製區域與畫布
- 20. Android透明畫布(surfaceview)
- 21. 在面板上繪製透明位圖
- 22. WxWidgets繪製不透明度的位圖
- 23. HTML5畫布繪製多個透明PNG圖像
- 24. 在畫布中,如何繪製2個半透明重疊圓圈
- 25. Android:在透明色中用手指在位圖上繪製
- 26. 如何用Raphael.js繪製「透明筆畫」
- 27. Android - 如何設置半透明佈局?
- 28. 如何製作半透明佈局?
- 29. Android繪製透明度
- 30. Android使視圖透明或至少半透明
感謝您的代碼。我知道這種方法,但循環了一些像這樣的小小精靈,每一幀都會破壞我的幀率。我之前編寫過這樣的代碼,它嚴重的慢了循環和操作單個像素。必須有一種更簡單的方法,因爲幾個GUI元素具有快速衰落效果。 – wordyword 2010-03-26 18:56:55