導航:首頁 > 操作系統 > android黑色半透明

android黑色半透明

發布時間:2022-12-13 20:59:04

android 狀態欄透明

前言:最近項目大量用到狀態欄透明,網上也出現很多庫可以直接拿來用,個人認為沒有必要那麼重引用到一個庫(有木有同學和我有一樣的想法),所以研究了一番,在此做個記錄加強記憶也便後期查閱,如果無意中有幸能幫助到你那就再好不過了。

Android 從 4.4 (SDK 19) 開始支持 系統欄(狀態欄+導航欄)半透明 效果:

翻譯一下就是:

TranslucentDecor 主題設置了兩個屬性 windowTranslucentStatus 和 windowTranslucentNavigation 都為 true,前者指定狀態欄半透明、後者指定導航欄半透明。

本文只探討「狀態欄」

默認樣式是這樣:

可見 Toolbar 和系統狀態欄之間有明顯的分界,我們要實現的效果是 Toolbar 和狀態欄背景統一,看起來像是一個整體(自行腦補圖片)。

按照官方文檔,我們自定義主題:

對應的 Activity 引用該主題:

我看來看看效果:

雖然實現了半透明,但是布局被狀態欄覆蓋,接下來在布局文件中設置 fitSystemWindows (注意加到根節點 ConstraintLayout 上):

來看看效果:

雖然布局沒有被狀態欄覆蓋,但是狀態欄背景顯然這不是我們想要的效果😭

為什麼狀態欄會這么奇怪?

文章開頭的定義中我們說了,布局文件會延伸到狀態欄所佔區域下, fitsSystemWindows 的作用是給對應的 View 增加 padding(這里以 ConstraintLayout 為例),目的是為了讓其內容不被狀態欄遮擋。

在我們的布局文件中 ConstraintLayout 沒有設置背景(默認白色),所以狀態欄默認的半透明背景色和 ConstraintLayout 的白色背景疊加,就變成了上圖中的效果。

【總結】兩個基本概念:

1、 windowTranslucentStatus 設置為true之後,狀態欄默認是 半透明 的(4.4 是黑色到透明色漸變,5.0+ 是純黑色半透明),和我們要求的 透明 相去甚遠。更重要的是,布局會延伸到狀態欄底下。

2、 android:fitsSystemWindows 簡單理解 就是 View 為了適配系統狀態欄和導航欄(不被遮擋)自動 增加 padding ,當然真正的實現原理比這復雜很多而且不同的 View 可以自定義實現方式。

所以,為了實現文章開頭提出來的「狀態欄透明」效果,我們需要處理:

設置 windowTranslucentStatus 為 true,讓狀態欄半透明。

在根節點設置 android:fitsSystemWindows 使其不被狀態欄遮擋。

Android 4.4 暫時沒有辦法去掉狀態欄的漸變。

Android 5.0+ 開始支持修改狀態欄顏色,設置透明色即可把半透明去掉。

看看效果:

我們看到即使狀態欄透明了,但是其底色是一片白,因為跟節點 ConstraintLayout 沒有設置背景,大多情況下我們不會給整個跟節點設置顏色,可以考慮把 android:fitsSystemWindows 設置到子 View 上,本例中是 AppBarLayout (5.0+ 無效,只能顯式給 AppBarLayout 加 padding,可以利用其背景色),實際項目中可靈活調整。

最終效果:

至此,完成狀態欄透明效果,網上有很多庫,實際上都是基於此原理,在此基礎上再自定義 View 做為狀態欄背景。

https://developer.android.com/about/versions/android-4.4.html

❷ color 加透明度

我們可以在color文件中定義background="#XXxxxxxx"
半透明顏色值和我們平時使用的顏色不一樣,半透明顏色值共8位,前2位是透明度,後6位是顏色。
也就是透明度和顏色結合就可以寫出各種顏色的透明度.

舉個例子:
黑色全透明:#00000000
白色半透明:#80FFFFFF
黑色半透明:#80000000
黑色不透明:#FF000000

轉自:
Color設置透明度(Android)_紫色的路的博客-CSDN博客_color 透明

❸ android 半透明效果怎麼實現的

設置透明效果 大概有三種

1、用android系統的透明效果
java代碼
android:background="@android:color/transparent"

例如 設置按鈕
Java代碼
<Button android:background="@android:color/transparent"

android:text="@+id/Button01"

android:id="@+id/Button01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#ffffff" />

2、用ARGB來控制
Java代碼
半透明<Button android:background="#e0000000" />
透明<Button android:background="#00000000" />

3、設置alpha
Java代碼
View v = findViewById(R.id.content);//找到你要設透明背景的layout 的id
v.getBackground().setAlpha(100);//0~255透明度值

❹ android 怎麼給一塊區域設置背景半透明

activity的背景透明,只需在只要在配置文件內activity屬性配置內加上android:theme="@android:style/Theme.Translucent"就好了。
但是想要多方面的設置theme的話,就要在values里設置風格先:
加透明:
先在res/values下建colors.xml文件,寫入:
<?xmlversionxmlversion="1.0"encoding="UTF-8"?>
<resources>
<colornamecolorname="transparent">#9000</color><!--透明度-->
</resources>
這個值設定了整個界面的透明度,為了看得見效果,現在設為透明度為56%(9/16)左右。
透明度可以用#9000值調,將這個值(ARGB)改變,就會有不同效果的透明度。
再在res/values/下建styles.xml,設置程序的風格
<?xmlversionxmlversion="1.0"encoding="utf-8"?>
<resources>
<stylenamestylename="Transparent">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
</style>
</resources>
加了@+android:style/Animation.Translucent這句的時候就會顯示出此activity會有動畫切換效果
最後一步,把這個styles.xml用在相應的Activity上。即在AndroidManifest.xml中的任意標簽中添加 android:theme="@style/transparent"
如果要設置所有的activity都使用這個風格,就把這句標簽語句添加在中。

❺ 5、控制項系列之TOAST(吐司提示)的曾經、現在與未來

Toast概念的由來: 除了Android規范,Windows的規范中也有Toast,但定義不一樣。Toast在Android中的定義就是大家所熟悉的黑色半透明提示,而在Windows的規范中Toast概念幾乎等同於Android的一條Notification(通知)。Windows和Android的Toast有著千絲萬縷的聯系,據說一位微軟前員工在開發MSN Messenger時,覺得MSN彈出通知方式很像烤麵包(Toast)烤熟時從烤麵包機(Toaster)里彈出來一樣,因此把這種 提示方式 命名為Toast,後來這位微軟前員工帶著這一習慣命名跳槽去了Google。

iOS里的HUD: 仔細閱讀iOS設計指南就會發現並沒有Toast這個控制項,但iOS中確實有類似於Toast樣式出現,例如iOS的音量調節提示。 iOS 把這個組件叫做 UIProgressHUD(HUD意思很可能是heads up display),可惜這個組件是系統私有的,第三方App無法直接獲取使用,因此出現了各種模仿它的第三方控制項,例如MBProgressHUD、 SVProgressHUD還有JGProgressHUD,從此以後HUD就成了iOS開發者里達成共識的半官方概念。

被泛化的Toast: 你要是執著的把HUD念做Toast,大家也能理解,因為如今Toast的概念已經泛化,早已打破了Android的規范。

在Android正統的規范中Toast:①出現在屏幕底部。②只能放文字不能帶圖標,文字要精簡不宜太長。③是模態的,可以透過Toast對其他控制項進行操作。④短時間後會自動消失。⑤不能對Toast進行交互,不能手動操作讓Toast主動消失。

在市面上很容易找到打破這個規則的Toast樣式,例如載入:出現在屏幕中間、帶圖標,是模態的,如果網速很慢,Toast可能會持續很長時間,可以通過操作讓其主動消失。

泛化使得Toast原本的定義變得模糊,拓展了很多新的使用場景。控制項定義和用途的變化也在隨著時間演化,演化出符合業務和用戶習慣的新形式反過來又會促成新的控制項定義和規范,目前在移動平台里,似乎所有半透明矩形提示和反饋都可以被稱作Toast。連iOS官方的Apple Store App都開始使用類似Toast的控制項。

頂部Toast: 除了Toast概念的泛化,最近不少iOS App在嘗試將Toast的位置由屏幕底部和中間改到頂部,這樣做有幾個好處:1.出現位置穩定。不會因為軟鍵盤出現導致原本在屏幕底部或中間的Toast被遮蓋或浮動到其他位置。2.更容易引起用戶注意。iOS持續錄音、GPS被使用、正在通話狀態、還有活動指示器和系統push通知都出現在屏幕頂部,iOS用戶更習慣於在頂部感知反饋信息。3.不幹擾用戶瀏覽主體內容。Toast出現在屏幕頂部不會遮擋主體內容。

Toast的未來: Toast有很多優點:1.佔用屏幕空間小。2.不會打斷用戶操作。3.使用簡單適用范圍廣,人人都是會用Toast的產品經理。但Toast也有不少缺點:1.出現時間短,在碎片化時代注意力不集中容易錯過Toast提示。2.雖然非模態,但是黑乎乎的樣式上給人一種模態的錯覺,會打斷心流。3.遮蓋其他控制項,但不能對Toast進行交互。

更為嚴重的是Toast被濫用的情況比較嚴重,當一個App在載入、表單提示、狀態變更反饋、斷網消息等使用Toast,不斷出現的黑乎乎矩形會對整個體驗帶來非常大的阻塞感,有時候甚至會同時出現兩個Toast或者持續彈出同一個Toast等令人啼笑皆非的情況。

代替Toast的其他形式: 濫用Toast是懶惰的做法,設計師完全有其他形式代替Toast,達到更優雅的用戶體驗。

頁面內提示: 這種提示可以常駐在頁面里,即使用戶短時間內注意力轉移,提示也不會消失,確保用戶能一直完整的看到。此外頁面內提示能容納更多信息量,與頁面本身風格比較契合,沒有阻塞感,適合表單錯誤提示、載入過渡。

多態按鈕: 如果按鈕被按下後需要與伺服器交互後才能真正響應操作,那麼等待難以避免。這種情況下可以給按鈕增加多個狀態,讓用戶知道App已經接受到他的操作。典型的例子是支付寶的確認付款按鈕,擁有付款前、正在付款和付款成功三個狀態,反饋明顯不需要額外再用Toast進行提示。

動效: 優雅的動態效果能給吸引用戶注意力,富含情感給用戶留下深刻印象。事物之間的關系可以通過動效進行隱喻。例如電商App加入購物車,商品飛入購物車中,有趣流暢。

震動和聲音: 除了屏幕內反饋,屏幕外的反饋效果更強烈更真實。例如拍照時「咔擦」聲音,還有啟動靜音模式時手機震動。考慮到手機放在包里感知不到震動或者手機音量太小,因此聲音和震動建議作為輔助反饋手段。

Snackbar: Snackbar可以理解為是加強版的Toast。樣式和規則與Toast非常相似,不同主要有兩點:1.Snackbar支持主動滑動關閉。2.Snackbar可以附帶一個操作(也可以不帶)。

❻ 如何設置Android中控制項的顏色透明度

設置Android中控制項的顏色透明度,可自由設置在layout里也可以在activity里 #ff000000 此為16進制顏色代碼, 前2位ff為透明度,後6位為顏色值(000000為黑色,ffffff為白色,可以用ps等軟體獲取)。 透明度分為256階(0-255),計算機上用16進製表示為(00-ff)。透明就是0階,不透明就是255階,如果50%透明就是127階(256的一半當然是128,但因為是從0開始,所以實際上是127)。 0進制的255換算成16進制是ff,127換算成16進制是7f,#7f000000 代表50%透明度的黑色。 (寫成#50000000當然是不行的)進制轉換可使用win7自帶計算器(轉為科學型)。例:25%透明度的一種紅色「#3ff70000

❼ android導航欄與狀態欄顏色及透明度

首先創建一個空項目,如下圖

可以看到狀態欄是白字黑背景, 導航欄也是白圖標黑背景
嘿嘿, 我們先把狀態欄隱藏掉,在添加一個ImageView, 讓ImageView做背景(方便查看)

樣子如下:

將狀態欄和導航欄設置透明, 找到 Manifest.xml 文件, 在主題樣式中修改

android:statusBarColor 設置狀態欄背景色
android:navigationBarColor 同上
android:windowLightStatusBar 設置狀態欄文字色, true為深色, false為白色
android:windowLightNavigationBar 同上
android:windowTranslucentStatus 設置狀態欄半透明狀態, true為半透明, false為不透明
android:windowTranslucentNavigation 同上

最後兩個半透明狀態下面沒用, 可自己嘗試看效果

效果圖如下:

可以看到導航欄與狀態欄並沒有透明,原因是默認不能佔用狀態欄空間與導航欄空間,根布局背景為白色,所有這里顯示白色
可以通過設置 getWindow().getDecorView().setSystemUiVisibility() 來適配

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 適配狀態欄空間
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 適配導航欄空間
效果如下:

❽ 請教android怎麼讓控制項背景透明

以Android Studio為例,步驟如下:

1、直接打開相關窗口,在Android-app-res-layout的空白處點擊滑鼠右鍵並選擇New-Layoutresource file。

❾ Android 透明度設置詳解

格式:

android:background="#XXxxxxxx"(顏色可以寫在color中)

說明:半透明顏色值不同於平時使用的顏色,半透明顏色值共8位,前2位是透明度,後6位是顏色。也就是說透明度和顏色結合就可以寫出各種顏色的透明度。下面是透明度說明表,供大家參考。

部分透明度示例:

setAlpha()的括弧中可以填0–255之間的數字。數字越大,越不透明。

注意點:
在5.0以上系統時,有些機型會出現莫名其妙的顏色值不起作用,變成透明了,也就是用此方法會導致其他共用一個資源的布局(例如:@color/white)透明度也跟著改變。比如text用上述方法設置成透明後,項目中,其他用到text顏色值的控制項,都變成透明了。

原因:在布局中多個控制項同時使用一個資源的時候,這些控制項會共用一個狀態,例如ColorState,如果你改變了一個控制項的狀態,其他的控制項都會接收到相同的通知。這時我們可以使用mutate()方法使該控制項狀態不定,這樣不定狀態的控制項就不會共享自己的狀態了。

android:alpha的值為0~1之間的數。數字越大,越不透明。1表示完全不透明,0表示完全透明。

說道Activity透明,發現網上的基本上都已經過時,在有v7以上的控制項都無法實現,均會報錯

所以如若你的布局xml文件有 support-V7 上的控制項的話,<style name="translucent">里的name要前要添加 AppTheme,如:

❿ android開發中如何將listpreference中的黑色背景設置成透明色

如何設置PreferenceActivity/preferenceScreen的背景色

1、在value文件夾下新建一個systemset.xml文件,sytemset.xml內容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="sys_set_preacitivity">
<item name="android:windowBackground">@drawable/background</item>
<item name="android:focusable">false</item>
<item name="android:textColor">#ff000000</item>
<item name="android:cacheColorHint">#ffffffff</item>
<item name="android:windowNoTitle">false</item> <!-- 用來設定是否顯示標題 -->
</style>
</resources>
2、在AndroidManifest.xml調用
<activity android:name="SystemSetAcitivity" android:theme="@style/sys_set_preacitivity"></activity>
4、新建一個xml文件,在xml下新建一個system_set.xml,內容是
<?xml version="1.0" encoding="utf-8"?>
<preferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/systemTitle" android:layout="@layout/system_set">

<preferenceCategory android:title="@string/soundTitle">
<CheckBoxPreference android:title="@string/muteTitle"
android:summary="@string/muteSum"></CheckBoxPreference>
<CheckBoxPreference android:title="@string/shockTitle"
android:summary="@string/shockSum"></CheckBoxPreference>
<CheckBoxPreference android:title="@string/soundTitle"
android:summary="@string/soundSum"></CheckBoxPreference>
</PreferenceCategory>

<preferenceCategory android:title="@string/soundTitle">
<CheckBoxPreference android:title="@string/muteTitle"
android:summary="@string/muteSum"></CheckBoxPreference>
<CheckBoxPreference android:title="@string/shockTitle"
android:summary="@string/shockSum"></CheckBoxPreference>
<CheckBoxPreference android:title="@string/soundTitle"
android:summary="@string/soundSum"></CheckBoxPreference>
</PreferenceCategory>

</PreferenceScreen>
4、在src下新建一個java文件
package com.android.perference.acitivity;

import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;

public class SystemSetAcitivity extends PreferenceActivity
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.system_set);
}

@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference)
{
return super.onPreferenceTreeClick(preferenceScreen, preference);
}

}
5、運行程序出現拖動黑屏,一直困擾著我,不知道怎麼解決,誰有好的辦法

閱讀全文

與android黑色半透明相關的資料

熱點內容
如何用mamp本地web伺服器 瀏覽:869
如何加密自己js代碼 瀏覽:623
排列組合a與c的演算法 瀏覽:534
如何在文件夾中找到同名內容 瀏覽:786
有什麼app文字轉韓文配音 瀏覽:372
循環宏1命令 瀏覽:35
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000