Android 背景透明度设置总结

一、写在前面的

在需求上遇到背景设置透明度还是比较常见的,设置透明度有几种方式,但是不同的场景应用下,不同的方式可能会出现一些问题。针对开发过程中的需求做以下总结。

二、先看效果图

图1、

图2、

图3、

图4

介绍:图1、蓝色头部和输入框背景初始状态

图2、点击按钮01,输入框的透明度不起作用,和title的透明度一样

图3、点击按钮02,背景透明度设置正常,但是可能会对全局的背景有影响

图4、点击按钮03,背景透明度设置正常,具体原因代码注释有提到

三、再加上代码

按钮点击

public void button01(View view){
  // search透明度不起作用
  title.setAlpha(0.2f);
  search.setAlpha(0.8f);
 }
 public void button02(View view){
  // 在布局中多个控件同时使用一个资源的时候,这些控件会共用一个状态
  // 如果你改变了一个控件的状态,其他的控件都会接收到相同的通知
  title.getBackground().setAlpha(51);
  search.getBackground().setAlpha(153);
 }
 public void button03(View view){
  // 使用mutate()方法使该控件状态不定,这样不定状态的控件就不会共享自己的状态了
  title.getBackground().mutate().setAlpha(51);
  search.getBackground().mutate().setAlpha(153);
 } 

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 <LinearLayout
  android:id="@+id/ll_title"
  android:layout_width="match_parent"
  android:layout_height="80dp"
  android:gravity="center"
  android:background="#0000ff"
  android:orientation="horizontal">
  <EditText
   android:id="@+id/et_search"
   android:layout_width="200dp"
   android:layout_height="60dp"
   android:gravity="center"
   android:hint="输入框"
   android:textColorHint="#ffffff"
   android:background="@drawable/search_title_bg"/>
 </LinearLayout>
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="40dp"
  android:orientation="horizontal">
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="01"
   android:onClick="button01"/>
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="02"
   android:onClick="button02"/>
  <Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="03"
   android:onClick="button03"/>
 </LinearLayout>
</LinearLayout> 

输入框背景 search_title_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
 <solid
  android:color="#000000"/>
 <corners
  android:radius="8dp"/>
 <stroke
  android:width="1dp"
  android:color="#666666"/>
</shape> 

四、写在后面的

背景透明度设置比较常见,mutate()方法,可以解决背景透明状态设置异常的现象。

(0)

相关推荐

  • Android设置Activity背景为透明style的简单方法(必看)

    方法一: 通过Theme.Translucent @android:style/Theme.Translucent @android:style/Theme.Translucent.NoTitleBar @android:style/Theme.Translucent.NoTitleBar.Fullscreen 只需要在Manifest中需要透明的Activity内设置theme为以上任意一个就可以了 <activity android:name="com.vixtel.simulate.

  • Android编程实现popupwindow弹出后屏幕背景变成半透明效果

    本文实例讲述了Android编程实现popupwindow弹出后屏幕背景变成半透明效果的方法.分享给大家供大家参考,具体如下: android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通.实现的方法也很多.我使用的可能是最简单的一种,就是设置一下getWindows的透明度.不多说上代码 /** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManag

  • Android中Activity常用功能设置小结(包括全屏、横竖屏等)

    本文实例讲述了Android中Activity常用功能设置小结(包括全屏.横竖屏等).分享给大家供大家参考,具体如下: Activity全屏设置 方式1:AndroidManifest.xml 复制代码 代码如下: <activity android:name="myAcitivty"  android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> 方式2:代码实现 复制代码 代码如下: re

  • Android实现将一个Activity设置成窗口样式的方法

    本文实例讲述了Android实现将一个Activity设置成窗口样式的方法.分享给大家供大家参考,具体如下: 1.在res/value文件夹下的style.xml文件中加入如下代码: <style name="Theme.FloatActivity" parent="android:style/Theme.Dialog"> <!-- float_box为我们定义的窗口背景 ,这个不是必须的--> <item name="and

  • Android编程实现activity dialog透明背景的方法

    本文实例讲述了Android编程实现activity dialog透明背景的方法.分享给大家供大家参考,具体如下: 首先查一下window  activity的关系 具体省略.... 我的理解就是 每个activity都有一个window 也就是view的最顶层容器 activity是提供给用户交互的一组View容器(window的child) 层次关系是 <window> <activity> </activity> </window> 所以说如果需要设置

  • android activity设置无标题实现全屏

    Activity设置全屏和无标题栏,要用到andorid.view.Window和Android.view.WindowManager. Window.FEATURE_NO_TITLE表示无标题栏. WindowManager.LayoutParams.FLAG_FULLSCREEN表示全屏. 具体用法如下: 1.设置全屏可以使用如下代码: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager

  • Android开发中Activity属性设置小结

    Activity是Android组件中最基本也是最为常见用的四大组件之一,在 android开发中 ,运用极为广泛,作为初学者需要熟练掌握,下例为Activity属性常用设置. android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态 android:clearTaskOn

  • Android编程实现设置按钮背景透明与半透明及图片背景透明的方法

    本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法.分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 复制代码 代码如下: <Button android:background="#e0000000" ... /> 透明 复制代码 代码如下: <Button android:background="#00000000" ... /> 颜色和不透明度 (al

  • android弹出activity设置大小的方法

    如何设置Activity的大小,让你的窗口看起来不再是全屏的.有些网友可能知道通过主题比如Theme.Dialog来实现,不过告诉大家设置Activity不再全屏显示的原理.Android Theme也主要是通过定义Style来实现的,实现的原理大家可以直接看Android Framework中的定义,今天给一种更简单,但相对灵活的方法,比如不要Theme.Dialog中的边框,下面就一起来看下自定义Activity 大小的实现方法. 1. 创建一个样式文件到你的工程,保存在在res/value

  • Android编程将Activity背景设置为墙纸的简单实现方法

    本文实例讲述了Android编程将Activity背景设置为墙纸的简单实现方法.分享给大家供大家参考,具体如下: 1)代码方式 Drawable wallPaper = WallpaperManager.getInstance( this).getDrawable(); this.getWindow().setBackgroundDrawable(wallPaper); 2)XML配置 在该Activity的配置中,加上: 复制代码 代码如下: android:theme = "@android

  • Android开发中Dialog半透明背景消失

    近日,遇到一个Dialog半透明背景消失的问题,背景需求是自定义Dialog实现警告提示框: // 初始化警告弹出框 alertDialog = new EmpAlertView(context, Utils.getIdByName(context, "style", "alert_style")); alertDialog.setCanceledOnTouchOutside(false); LayoutInflater inflater = (LayoutInfl

随机推荐