Android 背景透明度设置总结

el/2024/4/19 23:15:05

一、写在前面的

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

二、先看效果图

图1、

   

图2、


图3、

 

图4

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

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

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

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

三、再加上代码

按钮点击

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 );
  }

布局:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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

?
1
2
3
4
5
6
7
8
9
10
11
<?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()方法,可以解决背景透明状态设置异常的现象。


http://www.ngui.cc/el/5181718.html

相关文章

Android收集崩溃日志并上传

public class CrashHandler implements Thread.UncaughtExceptionHandler {public static final String TAG "CrashHandler";// 系统默认的UncaughtException处理类private Thread.UncaughtExceptionHandler mDefaultHandler;// CrashHandler实例private static Cra…

Android Text设置神器之SpanableString

TextView在Android中几乎是再常见不过的控件了&#xff0c;几乎遍布在各个角落里&#xff0c;对TextView并没有什么技术点来做分析&#xff0c;但是有时候可能会需要你在项目中处理一些特殊字体&#xff0c;比如下划线&#xff0c;横穿线&#xff0c;亦或者是为TextView部分字体…

Recyclerview内部的bug:IndexOutOfBoundsException: Inconsistency detected

错误日志 java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 15(offset:15).state:25 android.support.v7.widget.RecyclerView{8dfa7c VFE...... ........ 15,15-795,1584 #7f090068 app:id/classics_list}, adapter:com.huishoubao.nqy.a…

Android客户端修改加载的h5页面样式

为什么要修改 有的网页在你设置了WebView的WebSetting的时候,在手机端的显示会比较满意,但是部分网页以及部分手机就算你设置了WebSetting,但是在显示的时候还是会有问题,比如网页顶部的标题字体太大,当显示到手机的时候字体出现了重叠,影响用户体验效果。 如何修改 W…

Transition:Activity过渡、共享元素动画

本文原项目地址为&#xff1a;https://github.com/lgvalle/Material-Animations 在文章最后&#xff0c;有我自己对着这个项目手敲的一份。 代码基本一模一样&#xff0c;只有略微的修改&#xff0c;加了一些注释&#xff0c;以及将其中大多数英文翻译成了中文。 此篇 API 均为…

ModeMVC:在activity中堆代码就叫做MVC吗?

首先&#xff0c;看看这是不是自己 现在Android编程中如果在你没有特别认真设计框架&#xff0c;没有认真考虑面向对象的六大原则对编程重要性的时候&#xff0c;我们一般都是认为自己使用的是MVC的框架模式。但是你使用的真的是MVC吗&#xff1f;还是只是单纯的在activity中堆…

Android饼状图绘制

效果图 代码 https://github.com/269138004/PieChartsView 说明 有时间再补充

Android canvas.save()与canvas.restore()的使用总结

含义 canvas.save(); 画布将当前的状态保存 canvas.restore(); 画布取出原来所保存的状态 使用 canvas.save();与canvas.restore();一般结合使用&#xff0c;.save()函数在前&#xff0c;.restore()函数在后&#xff0c;用来保证在这两个函数之间所做的操作不会对原来在c…

一个小Demo来理解关于IPC(进程间通信)中的aidl

项目地址: Server端代码:Server端代码链接 Client端代码:Client端代码链接 1、IPC的基本要求 IPC(Inter-Process Communication)进程间通信是要在两个相互独立的进程之间进行信息的传递,在Android中每个进程都会被分配一个独立的虚拟机,以及内存空间,还会有自己的App…

AtomicBoolean的介绍与使用

AtomicBoolean是java.util.concurrent.atomic包下的原子变量&#xff0c;这个包里面提供了一组原子类。其基本的特性就是在多线程环境下&#xff0c;当有多个线程同时执行这些类的实例包含的方法时&#xff0c;具有排他性&#xff0c;即当某个线程进入方法&#xff0c;执行其中…