2016-05-28 10 views
0

画像用のフレームとして使用したい画像はImageViewです。 Sorry, it's white that's why invisible 申し訳ありませんが、それはこのようpngの画像に合わせる画像(フレーム)

Like this but with sides curved なぜ見えないのです白ですが、側面にソリューションは何

を湾曲? pngをパッチ9に変換して、親と背景の両方の画像を表示するよう試みましたが、うまくいきませんでした。画像が内側に収まらない

+0

githubの上でこのサンプルコードを試してみてください..... https://github.com/siyamed/android-shape-imageviewです –

答えて

0

私はこれをPorterDuffを使って行っています。湾曲した縁のある余分な画像を設計し、PorterDuff.Mode.SRC_OVERの内側にsetImageResourceのカスタム画像ビューを適用しました。ここで

はオーバーライド機能

@Override 
public void setImageResource(int resId) { 
    Bitmap rawBmp = BitmapFactory.decodeResource(getContext().getResources(), resId); 
    Bitmap rawMask = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.image_frame_arc_filled); 
    Bitmap rawBorderMask = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.image_frame_arc); 

    Bitmap bmp = Bitmap.createScaledBitmap(rawBmp, rawBmp.getWidth(), rawBmp.getHeight(), true); 
    Bitmap mask = Bitmap.createScaledBitmap(rawMask, bmp.getWidth(), bmp.getHeight(), true); 
    Bitmap borderMask = Bitmap.createScaledBitmap(rawBorderMask, mask.getWidth(), mask.getHeight(), true); 

    Bitmap bitmap = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(bitmap); 
    canvas.drawBitmap(bmp, 0, 0, null); 


    Paint maskPaint = new Paint(); 
    maskPaint.setXfermode(
      new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 
    canvas.drawBitmap(mask, 0, 0, maskPaint); 

    maskPaint = new Paint(); 
    maskPaint.setXfermode(
      new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); 
    canvas.drawBitmap(borderMask, 0, 0, maskPaint); 

    this.setImageBitmap(bitmap); 
} 
関連する問題