Questions tagged «drawable»

Drawable是与图形相关的术语,通常表示“要绘制的东西”。

20
Android drawable目录可以包含子目录吗?
在Android SDK文档中,与@ drawable / my_image xml语法一起使用的所有示例都直接解决了存储在我项目的res / drawable目录中的图像。 我想知道在drawable目录中创建子目录是否明显不可行。 例如,如果我具有以下目录布局: res/drawable -- sandwiches -- tunaOnRye.png -- hamAndSwiss.png -- drinks -- coldOne.png -- hotTea.png 我可以将金枪鱼色拉三明治的图像引用为@ drawable / sandwiches / tunaOnRye 还是我必须在可绘制目录中保持层次结构平坦。


7
如何从资源创建Drawable
我有一张图片res/drawable/test.png(R.drawable.test)。 我想将此图像传递给接受的函数Drawable,例如mButton.setCompoundDrawables()。 那么如何将图像资源转换为Drawable?
283 android  drawable 

12
setBackground与setBackgroundDrawable(Android)
我想设置背景可绘制的视图。(据我所知)有两种方法:setBackground和setBackgroundDrawable。 当我使用时setBackground,它说它已经添加到API级别16中,但是我项目的最低SDK版本是7。我认为它不能在16以下的任何版本上工作,对吗?但是当我使用setBackgroundDrawable时,它说它已被弃用。 我应该用什么?

11
Android初始屏幕图像大小适合所有设备
我有一个全屏PNG,要在启动时显示。只有一个错误,我不知道是什么尺寸摆在每一个绘制的文件夹(ldpi,mdpi,hdpi,和xhdpi)。我的应用程序应该可以在所有手机和平板电脑上良好运行。我应该创建什么尺寸(以像素为单位),以便初始画面在所有屏幕上都能正常显示?


7
Android-可绘制,仅在顶部带有圆角
我有一个可绘制的背景,有一个圆角的矩形: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:radius="6dp" /> </shape> 如预期的那样,这工作正常。 现在,我想将其更改为仅圆角,因此将其更改为: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/> </shape> 但是现在没有一个角是圆的,我得到一个普通的矩形。我在这里想念什么?

2
以编程方式替换选择器图像
我有一个ImageView,其中有一个可绘制的图像资源设置为一个选择器。如何以编程方式访问选择器并更改突出显示和未突出显示状态的图像? 这是选择器的代码: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iconSelector"> <!-- pressed --> <item android:state_pressed="true" android:drawable="@drawable/btn_icon_hl" /> <!-- focused --> <item android:state_focused="true" android:drawable="@drawable/btn_icon_hl" /> <!-- default --> <item android:drawable="@drawable/btn_icon" /> </selector> 我希望能够更换btn_icon_hl,并btn_icon与其他图像。

10
了解如何使用ColorMatrix和ColorMatrixColorFilter修改Drawable的色相
我正在为应用程序设计UI,并且尝试使用灰度图标,并允许用户将主题更改为他们选择的颜色。为此,我试图仅应用某种ColorFilter来将颜色覆盖在可绘制对象的顶部。我试过使用PorterDuff.Mode.MULTIPLY,它几乎完全按照我的需要工作,除了白色也覆盖了颜色。我理想地寻找的是类似Photoshop中的“颜色”混合模式,其中图形保留其透明度和亮度,并且仅修改图像的颜色。例如: 成为经过一些研究,看来ColorMatrixColorFilter类可以满足我的需要,但是我似乎找不到任何指向矩阵使用方式的资源。这是一个4x5的矩阵,但我需要知道的是如何设计矩阵。有任何想法吗? 编辑:好的,到目前为止,我对此的发现如下: 1 0 0 0 0 //red 0 1 0 0 0 //green 0 0 1 0 0 //blue 0 0 0 1 0 //alpha 此矩阵是恒等矩阵(应用时不更改),数字范围为0到1(浮点数)。该矩阵将与每个像素相乘以转换为新颜色。所以这对我开始变得模糊。因此,我认为每个像素都是一个1 x 4的向量,其中包含argb值(例如0.2, 0.5, 0.8, 1),该值将用转换矩阵点缀。因此,要使图像的红色强度加倍,可以使用如下矩阵: 2 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 …

14
Android:无法将@ drawable / picture转换为drawable
在我的drawable文件夹中,我有一些图像,它们都引用完美,但是当我尝试在同一文件夹中添加大小完全相同的其他图像,并尝试引用它时,会出现错误“无法转换@可绘制图片/图片绘制成可绘制图片”。我尝试过使用不同名称的同一张图片,但它一直在给我该错误。我也在不同的XML布局和相同的东西中尝试过。您还可以看到图片的名称分别是“ jack”,“ abc”,“ question_mark”,严格来说,可以使用哪些字符的规则仍然存在,但错误消息不断出现。谢谢任何关于如何解决问题的建议。 无法将@ drawable / picture转换为drawable

3
如何使用xml设置颜色可绘制的圆角半径?
在android网站上,有一个有关color drawables的部分。在xml中定义这些可绘制对象如下所示: <resources> <drawable name="solid_red">#f00</drawable> <drawable name="solid_blue">#0000ff</drawable> <drawable name="solid_green">#f0f0</drawable> </resources> 在Java API中,它们具有以下方法来定义圆角: setCornerRadius(float radius) 有没有办法在xml中设置圆角?
108 android  drawable 

4
是否可以在xml说明中旋转可绘制对象?
我正在创建一个具有可重复使用资源的应用程序(因为按钮始终是相同的,但是它们是镜像的或旋转的)。我确实想使用相同的资源,所以我不必再添加3个与原始资源完全相同但又轮换使用的资源。但是我也不想将代码与可以在XML中声明的内容混合使用,也不想通过矩阵进行转换,而这会花费处理时间。 我有一个在XML中声明的两个状态按钮。 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed --> <item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default --> </selector> 我想重用可绘制对象,因为它是相同的,但是旋转了90º和45º,并且我将按钮分配为可绘制对象。 <Button android:id="@+id/Details_Buttons_Top_Left_Button" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/details_menu_large_button" /> 我知道我可以用RotateDrawable或来旋转它,Matrix但是正如我已经解释的那样,我不喜欢这种方法。 是否有可能直接在XML上实现这一目标,或者您认为这将是最好的实现方式?放置所有资源,但将其旋转,在代码中旋转它们? ---编辑--- @dmaxi的答案很好用,这是将其与项目列表结合的方法:) <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <rotate android:fromDegrees="90" android:toDegrees="90" android:pivotX="50%" android:pivotY="50%" android:drawable="@drawable/and_card_details_button_up_onclick"/> </item> <item> <rotate android:fromDegrees="90" android:toDegrees="90" …

8
为什么矢量可绘制比例没有按预期缩放?
我正在尝试在Android应用程序中使用矢量可绘制对象。从http://developer.android.com/training/material/drawables.html(重点是我): 在Android 5.0(API级别21)及更高版本中,您可以定义矢量可绘制对象,这些对象可缩放而不会丢失定义。 使用此可绘制对象: <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="@color/colorPrimary" android:pathData="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /> 这个ImageView: <ImageView android:layout_width="400dp" android:layout_height="400dp" android:src="@drawable/icon_bell"/> 尝试以400dp(在运行棒棒糖的大约2015年移动设备上较大的高分辨率)上显示图标时,产生此模糊图像: 将可绘制矢量的定义中的宽度和高度更改为200dp,可以显着改善400dp渲染大小时的情况。但是,将其设置为TextView元素的可绘制对象(即,文本左侧的图标)现在会创建一个巨大的图标。 我的问题: 1)为什么在矢量可绘制对象中有宽度/高度规范?我认为这些的全部目的是它们无损地进行缩放,从而使宽度和高度的定义毫无意义吗? 2)是否可以使用单个矢量可绘制对象,它在TextView上可作为24dp可绘制对象,但是可以很好地缩放以使用更大的图像?例如,如何避免创建多个不同大小的矢量可绘制对象,而是使用一个可按我的渲染要求缩放的矢量可绘制对象? 3)如何有效使用width / height属性,以及viewportWidth / Height有何区别? 额外细节: 设备正在运行API 22 将Android Studio …

7
Android:克隆可绘制对象以使StateListDrawable具有过滤器
我试图做一个通用的框架功能,使任何Drawable在按下/集中/选中/等时都突出显示。 我的函数接受一个Drawable并返回一个StateListDrawable,其中默认状态是Drawable本身,并且的状态android.R.attr.state_pressed是相同的drawable,只是使用过滤器setColorFilter。 我的问题是我无法克隆drawable并使用应用的过滤器为其创建单独的实例。这是我要实现的目标: 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; } 如果我不克隆,则过滤器显然适用于两种状态。我尝试一起玩,mutate()但没有帮助。 有任何想法吗? 更新: 接受的答案确实克隆了一个可绘制对象。但这并没有帮助我,因为我的常规功能在另一个问题上失败了。似乎将可绘制对象添加到StateList时,它会丢失所有过滤器。

3
联系人气泡EditText
我正在尝试创建MultiAutoCompleteTextView类似于Google+应用程序中实现方式的联系气泡。以下是屏幕截图: 。 我试图扩展DynamicDrawableSpan该类,以便在文本范围的背景中获得可绘制的可绘制对象 public class BubbleSpan extends DynamicDrawableSpan { private Context c; public BubbleSpan(Context context) { super(); c = context; } @Override public Drawable getDrawable() { Resources res = c.getResources(); Drawable d = res.getDrawable(R.drawable.oval); d.setBounds(0, 0, 100, 20); return d; } } 我的卵形.xml可绘制对象的定义如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.