全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 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.***等等)加载的实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。

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

/**
 * Make this drawable mutable. This operation cannot be reversed. A mutable
 * drawable is guaranteed to not share its state with any other drawable.
 * This is especially useful when you need to modify properties of drawables
 * loaded from resources. By default, all drawables instances loaded from
 * the same resource share a common state; if you modify the state of one
 * instance, all the other instances will receive the same modification.
 *
 * Calling this method on a mutable Drawable will have no effect.
 *
 * @return This drawable.
 * @see ConstantState
 * @see #getConstantState()
 */
public Drawable mutate() {
  return this;
}

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

OK。所以

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

问题解决了!

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


# Android  # getBackground().setAlpha问题解决办法  # getBackground()  # 不透明  # 情况下  # 加载  # 晚上  # 如果你  # 让我  # 我在  # 也会  # 你在  # 当你  # 希望能  # 百思不得其解  # 这种情况  # 什么呢  # 谢谢大家  # 睡不着  # 解决办法  # 不与  # 举个例子  # 挺有意思 


相关文章: 制作网站公司那家好,网络公司是做什么的?  公众号网站制作网页,微信公众号怎么制作?  如何续费美橙建站之星域名及服务?  临沂网站制作企业,临沂第三中学官方网站?  建站主机默认首页配置指南:核心功能与访问路径优化  建站之星多图banner生成与模板自定义指南  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  建站主机选哪种环境更利于SEO优化?  css网站制作参考文献有哪些,易聊怎么注册?  宁波自助建站系统如何快速打造专业企业网站?  网页设计网站制作软件,microsoft office哪个可以创建网页?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  建站主机解析:虚拟主机配置与服务器选择指南  测试制作网站有哪些,测试性取向的权威测试或者网站?  建站VPS能否同时实现高效与安全翻墙?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  深圳网站制作平台,深圳市做网站好的公司有哪些?  5种Android数据存储方式汇总  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  定制建站流程步骤详解:一站式方案设计与开发指南  如何通过.red域名打造高辨识度品牌网站?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  定制建站是什么?如何实现个性化需求?  如何快速搭建高效香港服务器网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  高端建站如何打造兼具美学与转化的品牌官网?  如何在阿里云高效完成企业建站全流程?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  建站之星各版本价格是多少?  如何零基础在云服务器搭建WordPress站点?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何基于PHP生成高效IDC网络公司建站源码?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何选择适合PHP云建站的开源框架?  广州建站公司哪家好?十大优质服务商推荐  自助网站制作软件,个人如何自助建网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站之星导航配置指南:自助建站与SEO优化全解析  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  建站之星如何助力企业快速打造五合一网站?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作网站怎么制作,*游戏网站怎么搭建?  h5在线制作网站电脑版下载,h5网页制作软件?  焦点电影公司作品,电影焦点结局是什么?  建站主机无法访问?如何排查域名与服务器问题 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。