android设置透明
⑴ 如何实现Android透明导航栏
实现功能
1.步骤:
1) 创建一个工程,主布局就先做一个ImageView,自己找个好看的图片做src。
2) 在Activity重写的onCreate方法中获得窗口视图对象(DecorView)
3) 设置DecorView的SystemUiVisibility
4) 设置导航条、状态栏的颜色–>透明
5) 获取当前Activity的ActionBar并隐藏
2.具体代码和注释:
获取DecorView对象
java">@Override
protectedvoidonCreate(BundlesavedInstanceState){
...
ViewdecorView=getWindow().getDecorView();
...
}
设置SystemUiVisibility
intoption=View.SYSTEM_UI_FLAG_FULLSCREEN//全屏标记
|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//布局全屏标记,避免退出全屏模式时内容被覆盖
|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION//隐藏导航栏标记
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//布局隐藏导航栏标记,同理
|View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY//粘性沉浸体验
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;//确保上述标记稳定//此方法用来设置系统UI的可见性,系统UI包括状态栏、ActionBar、导航栏devorView.setSystemUiVisibility(option);
设置状态栏、导航栏的颜色:
getWindow().setStatusBarColor(Color.TRANSPARENT);//Color.TRANSPARENT=0表示#00000000即透明颜色
getWindow().setNavigationBarColor(Color.TRANSPARENT);
获取本页面的ActionBar并隐藏起来
ActionBaractionBar=getSupportActionBar();//注意:此处用的Activity继承的是
AppCompatActivity(它继承的是FragmentActivity)
//所以调用的是getSupport...方法,如果继承Activity则直接调用get...方法
assertactionBar!=null;//这一句可以不理会,反正我是Ctrl+F1提示出来的,意思其实是判断如果actionBar不为空则向下执行。
actionBar.hide();
注意:最后一点注意事项是:只支持Android API 21以上的手机
⑵ 怎样将android控件背景设置成透明
1、打开安卓的配置文件。
2、只需要在配置文件中把需要设置为透明的activity的样式设置为android:theme="@android:style/Theme.Translucent"
3、这样就可以把背景设置为透明。
⑶ android编程如何把现有的背景图片设置成透明的
方法一:
只要在配置文件内activity属性配置内加上
android:theme="@android:style/Theme.Translucent"
就好了。
这样就调用了android的透明样式!
方法二:
先在res/values下建colors.xml文件,写入:
<?xmlversionxmlversion="1.0"encoding="UTF-8"?>
<resources>
<colornamecolorname="transparent">#9000</color>
</resources>
这个值设定了整个界面的透明度,为了看得见效果,现在设为透明度为56%(9/16)左右。
⑷ 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导航栏与状态栏颜色及透明度
首先创建一个空项目,如下图
可以看到状态栏是白字黑背景, 导航栏也是白图标黑背景
嘿嘿, 我们先把状态栏隐藏掉,在添加一个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 Button 怎么把背景设置透明
Android控件设置边框,或者背景可以使用XML来配置,背景透明只需要设置solid 的值为 #00000000即可,前面两位是透明度,后面6位是RGB颜色值,具体示例代码如下:
1.在drawable新建一个 buttonstyle.xml的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 连框颜色值 --><item>
<shape>
<solid android:color="#ff0000" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item android:bottom="3dp" android:right="3dp">
<shape>
<solid android:color="#ffffff" />
<padding android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
</item>
</layer-list>
2.然后在布局文件里面引入这个xml,示例代码如下:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
android:background="@drawable/buttonstyle" />
⑺ 如何让android 的activity变成完全透明的
resources 添加一个style标签 parent 继承 android:Theme.Light.NoTitleBar
item android:windowBackground 属性可以设置一个透明颜色
然后在需要透明的Activity onCreate 中或者项目清单文件中设置这个自定义皮肤即可
示例代码:
<stylename="customeTheme"parent="android:Theme.Light.NoTitleBar">
<!--设置window背景颜色或图片也就是Activity的窗口背景-->
<itemname="android:windowBackground">@color/window_bg_color</item>
<!--状态栏视图背景透明4.4系统支持-->
<itemname="android:windowTranslucentStatus">true</item>
<!--屏幕下面的虚拟操作按钮不透明-->
<itemname="android:windowTranslucentNavigation">false</item>
<!--软键盘显示时,视图自动上移-->
<itemname="android:windowSoftInputMode">stateAlwaysHidden|adjustResize</item>
</style>
⑻ Android设置Activity背景为透明style的方法
1.设置Theme.Translucent
只需要在Manifest中需要透明的Activity内设置theme为以上任意一个就可以了
2.在Activity的layout.xml文件中,设置父布局背景透明度(不设置背景色默认全透明),不设置透明度看不出效果,如果子控件设置了背景色且不透明,则子控件所占位置无透明效果。
3.效果图
1.使用自定义的Theme
2.在res-values-styles.xml中添加MyTransparent
3.在res-values-colors.xml中添加透明颜色值
4.以上步骤设置完成和方法一有同样的效果,省去了在layout.xml设置透明背景色(如果在布局中页设置了背景色,将以布局中的为准)。方法二相对灵活一点,可以多设置一些属性,如模糊背景:
⑼ 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