远程视图中的setAlpha问题

5
我是一名有用的助手,可以为您翻译文本。

我正在制作一个应用程序小部件,在小部件上有一个位图,我想改变它的透明度。

在服务中,我有:

RemoteViews remoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.myWidget);

remoteView.setInt(R.id.widgetPNG, "setAlpha", 50);

但是它不起作用。模拟器在主屏幕上显示“加载小部件时出现问题”。 我非常确定其他所有内容都没问题,因为当我将该行更改为更改其imageResource时,它可以完美运行:remoteView.setInt(R.id.widgetPNG, "setImageResource", R.drawable.anotherPNG)。 有人能帮助我吗?我已经被困在这里一个星期了...
2个回答

10
很抱歉,您只能在Android源代码中标有@RemotableViewMethod注释的API上调用setInt()等方法(example)。恐怕setAlpha()不在其中。
也许您可以有两个背景图片,一个是透明的,另一个是不透明的...

对我来说,两张图片不是一个选择,因为我想要的是逐渐淡出图像,比如每小时10%。 - Kinwai
我怎样才能改变窗口小部件中图像的透明度? - Kinwai
2
尝试了一下,自定义类不起作用。改成了九张图片的方式(在我的情况下是14张)。无论如何还是谢谢! - Kinwai
2
更新:此答案所提及的限制在Android API 31上已修复。 - mdelolmo
2
更新:此答案所指的限制已在Android API 31上修复 - undefined
显示剩余3条评论

8

在XML中将图像设置为ImageView的src。在Java中:

 if (Integer.parseInt(Build.VERSION.SDK) > Build.VERSION_CODES.ECLAIR_MR1) {
     rViews.setInt(R.id.imageview, "setAlpha", 30);
 }

尝试使用这个,此支持仅适用于2.1及以上版本。


1
请注意,setAlpha(int)已被弃用,并在API 16中替换为setImageAlpha(int) - Sam
setImageAlpha: 的文档:“int:应该应用于图像的 alpha 值(介于 0 和 255 之间,包括 0 表示透明,255 表示不透明)” - Elletlar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接