iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android getBackground().setAlpha遇到问题解决办法
  • 212
分享到

Android getBackground().setAlpha遇到问题解决办法

Android 2022-06-06 01:06:29 212人浏览 安东尼
摘要

Android getBackground().setAlpha遇到问题解决办法 前言: 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问

Android getBackground().setAlpha遇到问题解决办法

前言:

使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题

从晚上9点就开始琢磨,为什么我在一个地方设置了getBackground().setAlpha(0);在别的activity中有些控件也变成透明的了,让我百思不得其解,哦,现在是晚上十一点四十五,问题终于解决(解决不了睡不着觉啊),觉得挺有意思的,分享一下,先举个例子:


<?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" >
  <TextView
    android:id="@+id/text1"
    android:layout_width="match_parent"
    android:layout_height="60dp" 
    android:background="@color/text_orange"
    />
  <TextView
    android:id="@+id/text2"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/text_orange"
    />
</LinearLayout>

两个textview,background都指向相同的资源,那如果text1.getBackground().setAlpha(255)(不透明),那text2的背景是不是也跟着变成不透明的呢,答案是yes,那为什么呢:默认情况下,所有的从同一资源(R.drawable.***等等)加载的实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。

那怎么解决这种情况呢,看看这个方法:



public Drawable mutate() {
  return this;
}

翻译一下注释吧:让这个drawable可变,这个操作是不可逆的。一个可变Drawable可以保证不与其它的Drawable分享一个状态。当你需要修改资源中的Drawable的属性时这个方法是非常有用的,因为默认情况下加载相同资源的所有Drawable实例拥有同一个状态,如果你在一个地方改变了状态,其它的实例也会跟着改变。

OK。所以


text1.getBackground().mutate().setAlpha(255);

问题解决了!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


--结束END--

本文标题: Android getBackground().setAlpha遇到问题解决办法

本文链接: https://www.lsjlt.com/news/21931.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作