一、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/189507.html