Ben*_*654 5 android android-imageview android-gridview android-drawable
我试图在GridView中获得ImageView的颜色,我之前已经应用了颜色过滤器.我正在运行带有4.2.2的Nexus 4
我正在改变像这样的ImageView的颜色.在应用滤镜之前,图像的实际颜色是白色.
Drawable myIcon = getResources().getDrawable(R.drawable.bufferbuildercolor3);
myIcon.setColorFilter(new PorterDuffColorFilter(Color.rgb(Color.red(color),Color.green(color), Color.blue(color)),PorterDuff.Mode.MULTIPLY));
Run Code Online (Sandbox Code Playgroud)
现在这实际上并没有改变我想要的源图像颜色.这始终是白色的.
我的问题是,在我丢失了用于设置它的数据后,我正在尝试很好地引用颜色.我想长按ImageView并获得它的颜色.
我在下面的问题中找到了一些代码,但它似乎不起作用,因为它总是返回白色(255,255,255),这是原始图像的颜色,但不是过滤器.如何在Android中获得像素颜色?
ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x,y);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
Run Code Online (Sandbox Code Playgroud)
我尝试过类似下面的东西,但是当我调用getColorFilter时它就崩溃了.
ImageView image = (ImageView)findViewById(R.drawable.bufferbuildercolor3);
ColorFilter test = image.getColorFilter();
Run Code Online (Sandbox Code Playgroud)
我不知道还能做什么,除了找到实际网格位置的X/Y,然后在那个点获得屏幕背景颜色而不是图像.似乎应该有一个更简单的方法来做到这一点?
您可以使用您有兴趣稍后检索的数据标记ImageView
(或任何View
相关内容).例如,Color
使用与构造视图相同的视图标记视图PorterDuffColorFilter
:
Color tagColor = Color.rgb(Color.red(color),Color.green(color), Color.blue(color));
// tag
imageview.setTag(tagColor);
// get tag
tagColor = (Color) imageview.getTag();
Run Code Online (Sandbox Code Playgroud)
显然,当相关视图执行时,标记将被垃圾收集.
或者,如果您修复它,第3段代码中的方法可能会有效.目前,您正在尝试通过查找可绘制的 ID 来扩充视图- 这没有意义.id应该是以下形式R.id.imageview_id
:
ImageView image = (ImageView) findViewById(R.id.imageview);
ColorFilter test = image.getColorFilter();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7771 次 |
最近记录: |