导航:首页 > 操作系统 > 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黑色半透明相关的资料

热点内容
dvd光盘存储汉子算法 浏览:755
苹果邮件无法连接服务器地址 浏览:958
phpffmpeg转码 浏览:669
长沙好玩的解压项目 浏览:140
专属学情分析报告是什么app 浏览:562
php工程部署 浏览:831
android全屏透明 浏览:730
阿里云服务器已开通怎么办 浏览:801
光遇为什么登录时服务器已满 浏览:300
PDF分析 浏览:482
h3c光纤全工半全工设置命令 浏览:139
公司法pdf下载 浏览:379
linuxmarkdown 浏览:349
华为手机怎么多选文件夹 浏览:681
如何取消命令方块指令 浏览:347
风翼app为什么进不去了 浏览:776
im4java压缩图片 浏览:360
数据查询网站源码 浏览:148
伊克塞尔文档怎么进行加密 浏览:888
app转账是什么 浏览:161