Articles of 可绘制

Android:为了使用filter创build一个StateListDrawable,克隆一个drawable

我试图做一个通用的框架function,使任何可绘制成为突出显示时按/聚焦/select等 。 我的函数需要一个Drawable,并返回一个StateListDrawable,默认状态是Drawable本身,而android.R.attr.state_pressed的状态是可绘制的,只是使用setColorFilter应用了一个filter。 我的问题是,我不能克隆drawable,并应用filter的一个单独的实例。 这是我想要实现的: StateListDrawable makeHighlightable(Drawable drawable) { StateListDrawable res = new StateListDrawable(); Drawable clone = drawable.clone(); // how do I do this?? clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY); res.addState(new int[] {android.R.attr.state_pressed}, clone); res.addState(new int[] { }, drawable); return res; } 如果我不克隆,那么filter显然应用于两种状态。 我尝试玩mutate()但它没有帮助.. 有任何想法吗? 更新: 被接受的答案确实克隆了一个drawable。 它并没有帮助我,虽然因为我的一般function失败了一个不同的问题。 看起来,当你将一个drawable添加到一个StateList时,它将失去所有的filter。

将drawableLeft和drawableRight的高度约束到TextView的高度

我有以下TextView : <TextView android:drawableLeft="@drawable/loading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Updating Rates" /> 结果是这样的: 如何使加载循环的可绘制约束成比例,使其高度与文本的高度相匹配? 另外,如果可能的话,我想添加一些文字和图像之间的间距。

setBackgroundResource()放弃我的XML布局属性

我有一个用作ListView的项目的视图。 在我的自定义适配器中,使用View.setBackgroundResource()根据项目在列表中的位置更改视图的背景。 (对于列表中的第一个和最后一个项目,我有单独的资源。) 如预期的那样设置正确的背景图像,但是它具有令人讨厌的副作用,即在视图的XML定义中设置的所有填充都被完全忽略。 (如果我在XML中设置可绘制背景,并且不要在适配器的运行时改变它,那么填充一切正常。) 我怎样才能改变背景图片,并保留填充? 这是一个错误? 编辑它似乎有人已经在这里find同样的问题: 改变背景也改变了LinearLayout的填充?

如何在活动之间传递drawable

我怎样才能传递一个图像,可绘制的types之间的types? 我试试这个: private Drawable imagen; Bundle bundle = new Bundle(); bundle.putSerializable("imagen", (Serializable) unaReceta.getImagen()); Intent myIntent = new Intent(v.getContext(), Receta.class); myIntent.putExtras(bundle); startActivityForResult(myIntent, 0); 但它报告我一个执行: java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable

androidanimation未在onAnimationEnd中完成

虽然animation.hasEnded被设置为true,但是当onAnimationEnd事件被触发时,似乎Androidanimation并没有真正完成。 我希望我的视图在它的ScaleAnimation的末尾可以修改它的背景,但是你可以清楚地看到它在它完成之前改变了几个毫秒。 问题是,它闪烁,因为新的背景出现(=是)缩短了一段时间,直到animation真的完成。 有没有办法让animation的真实结束,或只是防止新的背景在这么短的时间内缩放呢? 谢谢! //编辑:我正在使用一个AnimationListener来获得以下调用: @Override public void onAnimationEnd(Animation animation) { View view = (MyView) ((ExtendedScaleAnimation) animation).getView(); view.clearAnimation(); view.requestLayout(); view.refreshBackground(); // <– this is where the background gets changed }

Android:从资产/可绘制文件夹访问图像

我目前正在使用的应用程序有数百个图像。 目前我将它们存储在“Drawable”文件夹中。 我正在考虑将他们全部移到资产文件夹。 我的问题是:使用这两种方法时性能是否有差异?

Android的TextView可绘制,改变可绘制和文本之间的填充?

我正在GridLayout下创build一个带有可绘制的TextView 。 我想把drawable放到TextView的中间, 我尝试setCompoundDrawablePadding(-75) ,它只改变文本的位置。 当前代码: TextView secondItem = new TextView(this); GridLayout.LayoutParams second = new GridLayout.LayoutParams(row2, col1); second.width = halfOfScreenWidth; second.height = (int) (quarterScreenWidth * 1.5); secondItem.setLayoutParams(second); secondItem.setBackgroundResource(R.color.MenuSecond); secondItem.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, R.drawable.ic_action_new); secondItem.setText("Text"); secondItem.setCompoundDrawablePadding(-180); secondItem.setGravity(Gravity.CENTER); secondItem.setTextAppearance(this, android.R.style.TextAppearance_Large_Inverse); gridLayout.addView(secondItem, second); 我怎样才能设置文本和绘制到TextView的中间?

Android Drawable:层叠列表重复位图在完全覆盖时不加载

我有三个全屏周视图,一次加载(上一个,下一个,当前)。 每周视图有7列(一周中的每一天一个)具有可绘制的背景。 我可绘制的资源背景是 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!– Grey border on left and right –><item><shape><solid android:color="#999"/></shape></item> <!– White background (.5pt to not cover border) –><item android:left=".5pt" android:right=".5pt"><shape>solid android:color="#FFF"/></shape></item> <!– Image that repeats to make a grid –><item android:left=".5pt" android:right=".5pt"><bitmap android:src="@drawable/grid" android:tileMode="repeat" android:gravity="center" /></item> <!– Times that align left. (12AM, 1AM, etc) –><item android:left="1pt" android:right=".5pt"><bitmap […]

有没有办法使用XML设置drawable的Alpha?

像自己一样容易。 我想创build一个alphabutton,这将有一个selectdrawable这种方式: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!– Play/Pause –> <item android:state_selected="false" android:drawable="@drawable/item" /> <item android:state_selected="true" android:drawable="@drawable/item" /> </selector> 我想要做这样的事情: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!– Play/Pause –> <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" /> <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" /> </selector> 感谢所有。

在Android @drawable中查找图像的主色

如果您使用Windows 7,则可以理解为什么我要在图像中find主色。将鼠标hover在任务栏中的程序上时,该特定程序的背景会根据图标中最主要的颜色进行更改。 我也注意到了其他程序中使用的这种技术,但不能记住它们。 我可以看到这在我用来开发应用程序的许多UI技术中很有帮助,而且我想知道如何从Android可绘制资源中find最常见的颜色。