Articles of drawable

ICS上的位图加载了错误的像素格式

我遇到了以下问题。 当任何位图由在Ice Cream Sandwich上运行的应用程序从资源加载时,它可能会被错误地渲染,就好像它已被解码为与当前窗口格式不同的格式,没有应用抖动。 但是,解码格式和窗口格式都已明确设置: BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inPreferredConfig = Bitmap.Config.RGBA_8888; 和 getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 以下是从使用ICS 4.0.3在Emulator上运行的本文中获取的测试应用程序的屏幕截图(它在HTC HD2上提供了相同的结果): RGBA_8888 (32位) 窗口格式 ,各种位图解码格式: RGB_565 (16位) 窗口格式 ,各种位图解码格式: 有几点可以注意到: 不时不考虑抖动旗帜; ICS的默认窗口格式似乎是RGB_565 ; RGB_565 窗口格式和RGBA_8888 位图解码格式是唯一具有良好外观的渐变。 在这些问题中也报告了这个问题,但仍然没有find解决方案: 渐变兼容性问题 – ICS默认的颜色比以前的所有Android版本都少 Android中糟糕的背景图像质量 问题是,如何在ICS上处理所有这些格式,更准确地说,如何使用RGBA_8888格式制作ICS加载位图以及如何将窗口格式设置为RGBA_8888以便正确显示这些位图?

XML中的垂直条纹背景?

我想设置一个视图背景,它是垂直条纹的常规网格。 条纹在两种颜色之间交替。 (例如,在一行中,可能有6个像素的浅灰色,后面是2个深灰色像素,重复以填充宽度。) 使用Bitmap(作为资源或在代码中生成)很容易做到这一点。 例如: ShapeDrawable bg = new ShapeDrawable(new RectShape()); int[] pixels = new int[] { 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFF999999, 0xFF999999}; Bitmap bm = Bitmap.createBitmap(pixels, 8, 1, Bitmap.Config.ARGB_8888); Shader shader = new BitmapShader(bm, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); bg.getPaint().setShader(shader); view.setBackgroundDrawable(bg); 有没有办法严格按照XML drawables这样做,而不使用位图资源?

为什么drawable文件夹中的文件名不能包含特殊字符或以大写字母开头?

这些规则是否有意义?

Android – 如何在ListView的背景上显示垂直线(并根据行高)?

如何在背景上显示垂直线,例如下图中以蓝色突出显示的线? 在这个例子中,我有一个带有ImageView元素的ListView(和TextView,但它与行无关),我希望这些项目背景上的垂直线感觉它们与每个项目“连接”。 另外,请注意垂直线不会填满所有背景。 垂直线在左侧,并且对于所有情况都不相等。 有时它会填充所有行高(在大多数ListView行中),有时它只填充行高的一半(在ListView的最后一项和ListView之外,在顶部,我们可以看到大的ImageView与星形图标)。 更新 我尝试了Hellboy提出的建议,它几乎完美无缺。 我为我的案例修改了建议的代码: RelativeLayout的宽度=“40dp”(与我正在使用的原始ImageView相同),height =“match_parent(与他说的相同),gravity =”center“(让它们在行高的中心) )和layout_marginLeft =“15dp”(让空格到左边距)。在ImageView中,我添加了marginTop =“10dp”和marginBottom =“10dp”,并且随之显示蓝色垂直线。但我有其他同一行中的元素,所以我有一个父布局(一个线性布局)。我的父布局是: 因此,上面的这个父布局具有描述的RelativeLayout和其他行元素的其他LinearLayout。 但是代码会导致图像变平 。 为什么会这样?! 似乎RelativeLayout将其高度视为ImageView高度(40dp),并考虑其marginTop和marginBottom,并且此时图像被展平。 等待这个问题的更多答案。 我会尝试另一种选择。

如何在android中使用ShapeDrawable以编程方式创建一个圆形的角落边框?

我需要通过扩展ShapeDrawable以编程方式创建带圆角的边框。 我需要一个带圆角的黑色边框,外面的像素是白色,内部像素是透明的。 我目前的代码有很多问题,其中的问题是它不会创建一个与边框厚度相同的光滑角落,并且边框的外部像素是透明的而不是白色。 这是我目前得到的角落的图片 这是我在构造函数中为’fill’传递Color.TRANSPARENT的代码: public class CustomShape extends ShapeDrawable { private final Paint fillpaint, strokepaint; public CustomShape(int fill, int strokeWidth,int radius) { super(new RoundRectShape(new float[] { radius, radius, radius, radius, radius, radius, radius, radius }, null, null)); fillpaint = new Paint(this.getPaint()); fillpaint.setColor(fill); strokepaint = new Paint(fillpaint); strokepaint.setStyle(Paint.Style.STROKE); strokepaint.setStrokeWidth(strokeWidth); strokepaint.setColor(Color.BLACK); } @Override protected void onDraw(Shape […]

Android:资源修改后的drawable id更改

我有一个Android应用程序,它使用一个库组件来选择一个图标并将其分配给一个按钮。 图标集位于res/drawable文件夹中,可以使用指南的典型适配器在库中访问: private Integer[] Imgid = { R.drawable.icon_home, R.drawable.icon_home2, … } 选择一个图标后,我将设置存储在ID为按钮和drawable的数据库中。 所有工作都已完成,但我注意到如果我想要添加或修改我的应用程序的一般图标集或资源,旧资源的ID可能会发生变化,因此db中的首选项指的是错误的图标。 有没有办法强制R类的旧ID,以便它们将来不会改变? 或者是否有另一种方法来管理组件厨房的项目与另一个属性而不是ID? (也许是字符串名称和reflection?) 提前致谢

在android中,对于内存的位图具有可绘制的优势

此问题与以下问题中的答案相关联: 删除位图时出错[Android] 在内存解除分配方面,在Android中使用Drawable over Bitmap是否有任何优势? 我正在看Romain Guy项目Shelves,他使用SoftReference来处理图像缓存,但是当SoftReference自动回收Bitmap的内存时,我无法搜索解除分配这些Drawables的代码。 据我所知,必须在Bitmap上显式调用.recycle()才能对其进行解除分配。

如何将前景属性设置为其他非FrameLayout视图

我想知道如何在与FrameLayout不同的视图中应用或模拟前景效果,如LinearLayout或RelativeLayout 这就是我现在拥有的: … 我想要的东西是这样的: … 提前致谢!!

添加视图后刷新LinearLayout

我正在尝试动态地将视图添加到线性布局。 我通过getChildCount()看到视图被添加到布局中,但即使在布局上调用invalidate()也不会让我看到孩子出现。 我错过了什么吗?

在加载毕加索之后,android得到Drawable图像

我正在使用Picasso库从url加载图像。 我使用的代码如下。 Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder) .error(R.drawable.placeholder).into(imageView); 我想做的是获取从url加载的图像。 我用了 Drawable image = imageView.getDrawable(); 但是,这将始终返回占位符图像,而不是来自url的图像加载。 你们有什么想法吗? 我应该如何访问刚刚从url加载的可绘制图像。 提前致谢。