Articles of 可绘制

Android RadioButtonbutton可绘制重力

我正在dynamic生成RadioButtons RadioButton radioButton=new RadioButton(context); LayoutParams layoutParams=new LayoutParams(radioWidth,radioHeight); layoutParams.gravity=Gravity.CENTER; radioButton.setLayoutParams(layoutParams); radioButton.setGravity(Gravity.CENTER); BitmapDrawable bitmap = ((BitmapDrawable)drawableResource); bitmap.setGravity(Gravity.CENTER); radioButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.itabs_radio)); radioButton.setButtonDrawable(bitmap); 正如你所看到的,我正拼命地把button的重心设置为居中,但是没有任何原因,它总是居中alignment,左alignment,原因是android单选button的默认样式: <style name="Widget.CompoundButton"> <item name="android:focusable">true</item> <item name="android:clickable">true</item> <item name="android:textAppearance">?android:attr/textAppearance</item> <item name="android:textColor">?android:attr/textColorPrimaryDisableOnly</item> <item name="android:gravity">center_vertical|left</item> </style> <style name="Widget.CompoundButton.RadioButton"> <item name="android:background">@android:drawable/btn_radio_label_background</item> <item name="android:button">@android:drawable/btn_radio</item> </style> 有什么办法可以将button绘制到中心吗?

如何在canvas上绘制文字?

我正在尝试为android开发一个简单的饼图类。 现在,它可以采取标签和值的地图,并绘制饼图。 我还没有添加馅饼的传说,这是我需要将文本放在屏幕angular落的小矩形附近。 任何帮助表示赞赏,因为我是Android开发新手。

可以使用drawable-mdpi-fr,drawable-hdpi-fr,drawable-ldpi-fr来进行不同分辨率的本地化

我想为不同的本地化使用不同的图像。 但是,我有所有解决scheme和所有语言的图像。 有没有办法做到这一点?

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的中间?