Android Studio 2.0 Preview 4
我正在尝试为现有的couplePhoto.jpg添加蓝色透明叠加颜色,并显示在ImageView
中。
这是我想要获得的效果,例如Google newsstand
应用。
这是我正在尝试更改的当前照片,但每次将照片加载到ImageView时都没有任何变化。
我认为最好的方法是使用覆盖照片的透明色。
使用以下颜色和一些将覆盖在照片上的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);
非常感谢任何建议,
答案 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