在照片上添加颜色以加载到ImageView中

时间:2016-01-06 10:08:08

标签: android bitmap

Android Studio 2.0 Preview 4

我正在尝试为现有的couplePhoto.jpg添加蓝色透明叠加颜色,并显示在ImageView中。

这是我想要获得的效果,例如Google newsstand应用。 enter image description here

这是我正在尝试更改的当前照片,但每次将照片加载到ImageView时都没有任何变化。 enter image description here

我认为最好的方法是使用覆盖照片的透明色。

使用以下颜色和一些将覆盖在照片上的alpha。

<color name="colorBackgroundShape">#99303F9F</color>

以下是我的尝试。

/ *尝试1 * /

ivBackground.setColorFilter(R.color.colorBackgroundShape, PorterDuff.Mode.DARKEN);
ivBackground.setColorFilter(R.color.colorBackgroundShape);
ivBackground.setImageBitmap(bitmapCouple);

/ *尝试2 * /

Bitmap bitmapCouple = BitmapFactory.decodeResource(getResources(), R.drawable.couplePhoto, options);
bitmap.eraseColor(getResources().getColor(R.color.colorBackgroundShape));
ivBackground.setImageBitmap(bitmapCouple);

/ *尝试3 * /

Bitmap bitmapCouple = BitmapFactory.decodeResource(getResources(), R.drawable.couplePhoto, options);
Bitmap newBitmap = Bitmap.createBitmap(bitmapCouple.getWidth(), bitmapCouple.getHeight(), bitmapCouple.getConfig());
Canvas canvas = new Canvas(newBitmap);
canvas.drawColor(getResources().getColor(R.color.colorBackgroundShape));
canvas.drawBitmap(bitmapCouple, 0, 0, null);
ivBackground.setImageBitmap(bitmapCouple);

/ *尝试4 * /

Bitmap bitmapCouple = BitmapFactory.decodeResource(getResources(), R.drawable.couplePhoto, options);
Canvas canvas = new Canvas();
canvas.drawColor(getResources().getColor(R.color.colorBackgroundShape));
canvas.drawBitmap(bitmapCouple, new Matrix(), null);
ivBackground.setImageBitmap(bitmapCouple);

非常感谢任何建议,

4 个答案:

答案 0 :(得分:2)

你的第一次尝试最接近真相。在这种情况下,您可以将任何内容设置为ImageView,然后应用颜色过滤器(我的是transparent_black)。

imageView.setImageBitmap(daBitmap);
        PorterDuffColorFilter greyFilter =
                new PorterDuffColorFilter(getResources().getColor(R.color.transparent_black), PorterDuff.Mode.SRC_ATOP);

        imageView.setColorFilter(greyFilter);

答案 1 :(得分:1)

<RelativeLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">

  <ImageView
    android:id="@+id/view"
    android:layout_width="300dp"
    android:scaleType="fitXY"
    android:layout_height="300dp"
    />
 <ImageView
    android:id="@+id/imgVie"
    android:layout_width="300dp"
    android:scaleType="fitXY"
    android:background="Your color"
    android:layout_height="300dp"
    />
</RelativeLayout>

答案 2 :(得分:1)

检查一下:

Bitmap photo = BitmapFactory.decodeResource(mContext.getResources(), place.getImageResourceId(mContext));

Palette.generateAsync(photo, new Palette.PaletteAsyncListener() {
  public void onGenerated(Palette palette) {
    int bgColor = palette.getMutedColor(mContext.getResources().getColor(android.R.color.black));
    holder.placeNameHolder.setBackgroundColor(bgColor);
  }
});

通过使用generateAsync(...)在后台生成调色板,当以onGenerated(...)的形式生成调色板时,您将收到回调。在这里,您可以访问生成的调色板并设置holder.placeNameHolder的背景颜色。如果颜色不存在,该方法将应用后备颜色 - 在本例中为android.R.color.black。

答案 3 :(得分:0)

您可以将FrameLayout与其中的两个图像视图一起使用。在一个加载您的图像和其他负载在另一个imageview