我有一個任意的視圖,我想淡入另一個視圖之上。在api level 11中,我看到有一個setAlpha,但我堅持支持api level 7.我沒有通過簡單的方法來執行此操作。我如何設置整個視圖的alpha而不與每個組件混淆?我如何設置api級別7(Android 2.1)中的整個視圖的alpha值
回答
使用AlphaAnimation將是最過渡的最佳解決方案,以達到合理的效果,肯定會爲我工作,如果我不能」 t找到一種方法來完成我正在嘗試做的事情,這涉及到基於設備的傾斜角度以漸變的方式在兩個視圖之間淡入淡出。幸運的是我有!這是我採取的策略:我將視圖包裝在FrameLayout的自定義子類中,並在onDraw上實現。在那裏,我將子視圖捕獲爲位圖,然後用預期的alpha值重新繪製位圖。這裏有一些代碼。我會編輯,當我得到清理,這是概念恰恰證明,但它就像一個魅力:
public class AlphaView extends FrameLayout {
private int alpha = 255;
public AlphaView(Context context) {
super(context);
setWillNotDraw(false);
}
public AlphaView(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
}
public AlphaView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setWillNotDraw(false);
}
public void setCustomAlpha(int alpha) {
if (this.alpha != alpha) {
this.alpha = alpha;
invalidate();
}
}
public int getCustomAlpha() {
return alpha;
}
@Override
protected void onDraw(Canvas canvas) {
for(int index = 0; index < getChildCount(); index++) {
View child = getChildAt(index);
child.setVisibility(View.INVISIBLE);
child.setDrawingCacheEnabled(true);
Bitmap bitmap = child.getDrawingCache(true);
bitmap = Bitmap.createBitmap(bitmap);
child.setDrawingCacheEnabled(false);
Paint paint = new Paint();
paint.setAlpha(alpha);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
}
這取決於視圖類型。
對於一個TextView,在XML你可以有以下屬性:
android:background="#00000000"
android:textColor="#77FFFFFF"
前兩個數字是Alpha值從00到FF(十六進制)。 背景是完全透明的,而文字是白色的,部分透明。我沒有測試過這個,但它應該工作。
如果你有一個背景是圖像,那麼最簡單的事情就是用透明度預先創建你的png drawable。
我有幾個是不同種類的意見(一些自定義繪製),所有共同生活在一個單個RelativeLayout。我希望能夠在RelativeLayout上設置alpha,而不是混淆所有衆多的孩子。 – 2011-04-26 16:11:26
我不認爲這可能與API級別7 ...但如果任何人知道更好,他們將不得不共享一個解決方案... – Maximus 2011-04-26 16:12:25
任何事情都是可能的。 ;) – 2011-04-26 16:15:45
您應該能夠使用AlphaAnimation在API級別7
View v = findViewById(R.id.view2);
AlphaAnimation aa = new AlphaAnimation(0f,1f);
aa.setDuration(5000);
v.startAnimation(aa);
啊射...我不使用動畫太多。這絕對是一種方式。我虛心添加我的最高票數。 – Maximus 2011-04-26 17:00:16
@Maximus @slund檢查一下!我想通了如何做alpha。 – 2011-04-26 18:50:08
要添加到:使用神話般的NineOldAndroids庫它也可以在兩行代碼中工作。 – 2013-03-26 08:11:20
- 1. Android 2.1(API級別7)上的視頻縮略圖
- 2. 如何近似Api級別7(Android 2.1)中的PendingIntent getActivities? 。
- 3. 的Android 2.1(API 7級)和AdMob SDK 6.3.1
- 4. Android 2.1 API 7中的PopupMenu
- 5. 設置視圖的位置API 7級編程
- 6. 在視圖上設置Alpha級別不起作用
- 7. Android API中Dialog.setOnShowListener的替代級別7
- 8. Android - 如何判斷/設置哪個API級別的目標
- 9. 如何設置列表視圖中所有項目的alpha值?
- 10. 如何在android中使用openGL 2.0設置圖片的alpha值
- 11. 如何爲Android Studio中的項目設置最低api級別?
- 12. Android和爲(圖片)視圖設置alpha alpha
- 13. Android Studio Lint - 爲lint設置API級別
- 14. Android - ADB/MonkeyRunner設置API級別
- 15. 如何設置事務隔離級別的整數值
- 16. android設置日期的最大值<API級別11
- 17. 如何在較低的Android API級別使用回收視圖?
- 18. 在IntelliJ中,如何設置Android API級別
- 19. 如何設置位圖預設置Alpha的alpha?
- 20. Android API 7(2.1),MapView,MultiThreading,ConcurrentModificationException
- 21. 設置IUTableViewCell子類子視圖的alpha
- 22. 如何設置地圖視圖的縮放級別,使三個針腳可見?
- 23. 不同級別的視圖狀態等設置的優先級
- 24. 如何爲地圖視圖設置縮放級別?
- 25. ggplot:爲整個圖層添加alpha值
- 26. 通過xml設置繪圖的alpha值
- 27. 設置Android日誌級別
- 28. android圖庫視圖更改alpha值
- 29. 更改alpha級別的javascript縮略圖
- 30. 如何設置uiclearcolor的alpha?
任何性能問題? – Quentamia 2012-04-09 15:40:55
我沒注意到。你的結果可能有所不同 – 2012-04-10 19:50:11
該解決方案降低了性能。 – 2013-04-15 16:06:10