一、Android透明色
Android中提供了一些預先定義好的透明度的顏色,我們可以直接調用,也可以自己定義透明度顏色。
例如,在 XML 文件中可以使用以下代碼來使用預定義顏色:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="這是透明度為50%的黑色"
android:textColor="@android:color/transparent"
android:background="#80000000" />
其中,使用的是 @android:color/transparent 就代表完全透明,而使用 #80000000 就代表透明度為50%的黑色
二、Android透明度對照表
Android中透明度的取值範圍是0到255,0代表完全透明,255代表完全不透明。
下面是透明度與對應程度的表格:
| 透明度 | 程度 |
|---|---|
| 0 | 完全透明 |
| 26 | 10% |
| 51 | 20% |
| 77 | 30% |
| 102 | 40% |
| 128 | 50% |
| 153 | 60% |
| 179 | 70% |
| 204 | 80% |
| 230 | 90% |
| 255 | 完全不透明 |
三、Android透明狀態欄
在 Android 4.4 及以上版本中,我們可以使用透明狀態欄來實現更好的應用體驗。
首先,在我們的 AndroidManifest.xml 文件中需要添加以下代碼:
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<activity
android:theme="@style/Theme.AppCompat.Light.NoActionBar.TransparentStatusBar">
...
</activity>
...
</application>
上面代碼中,我們在applicaton標籤里指定了全局的主題為@style/Theme.AppCompat.Light.NoActionBar,這樣我們的應用就沒有自帶的ActionBar了。
然後,在想要透明狀態欄的 Activity 中,我們需要在主題中指定透明狀態欄:
<style name="Theme.AppCompat.Light.NoActionBar.TransparentStatusBar"
parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
</style>
上面的代碼中,我們繼承了沒有ActionBar的主題,並且設置了透明狀態欄。
四、Android透明度
除了常用的 alpha 屬性來調整透明度之外,我們還可以使用 PortDuff.Mode 屬性和灰度圖來實現不同的效果。
例如,我們可以使用 Multiply 來達到混合背景色和前景色的效果:
ImageView ivColor = findViewById(R.id.iv_color);
ImageView ivMask = findViewById(R.id.iv_mask);
ivColor.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimaryDark));
ivMask.setColorFilter(ContextCompat.getColor(this, R.color.colorAccent),
PorterDuff.Mode.MULTIPLY);
上面的代碼中,我們分別給 ImageView 設置了背景色和前景色,並且使用 PorterDuff.Mode.MULTIPLY 混合它們。
五、Android透明背景代碼
我們也可以動態設置 View 的透明背景:
view.setBackgroundResource(android.R.color.transparent);
通過設置 android.R.color.transparent 可以將 View 的背景設置為完全透明。
六、Android透明Activity
如果我們想讓一個 Activity 在進入和離開時有過渡動畫,那麼可以使用透明Activity。
首先,在我們的 AndroidManifest.xml 文件中需要添加以下代碼:
<activity
android:name=".TransparentActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
上面的代碼中,我們在 TransparentActivity 中設置了透明主題。
然後,在進入 TransparentActivity 之前,我們可以添加過渡動畫,例如:
Intent intent = new Intent(MainActivity.this, TransparentActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.makeCustomAnimation(
MainActivity.this, R.anim.slide_in_bottom, R.anim.slide_out_top);
ActivityCompat.startActivity(MainActivity.this, intent, options.toBundle());
上面的代碼中,我們使用 ActivityOptionsCompat.makeCustomAnimation 方法來實現自定義動畫,並且將其作為參數傳遞給 startActivity 方法。
七、Android透明背景陰影選取
在一些特殊場合下,透明度高的背景可能會影響到陰影效果,我們可以通過給 View 設置 OutlineProvider 來解決這個問題。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.setOutlineProvider(ViewOutlineProvider.BACKGROUND);
}
上面的代碼中,我們為 View 設置了 BACKGROUND 的 OutlineProvider,這樣就不會受到背景的影響。
通過以上介紹,我們可以知道在 Android 開發中,透明度的應用有很多種方式,我們可以根據不同的需求,選擇不同的實現方法,來使得我們的應用更加美觀和實用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/189692.html
微信掃一掃
支付寶掃一掃