2016-08-06 5 views
0

コーナー半径をイメージビューに設定し、シークバーの半径を制御したいとします。シークバーが進むにつれて、コーナー半径は増加し、その逆もあります。 現在、シークバーを増やしているときに角の半径を取得しています。しかし、バーを探しているときにイメージビューを元の状態に戻さないのは、元に戻る。コーナー半径をイメージビューに設定する方法

cornerRadius.setMax(100); 
    cornerRadius.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     public void onStopTrackingTouch(SeekBar seekBar) { 
     } 

     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

      radius= progress; 

     for (int i = 0; i < IMGS.size(); i++) { 
     final PhotoView child = IMGS.get(i);    
     Bitmap viewCapture = null; 

     child.setDrawingCacheEnabled(true); 

      viewCapture = Bitmap.createBitmap(child.getDrawingCache()); 

      child.setDrawingCacheEnabled(false); 
      child.setImageBitmap(getRoundedCornerBitmap(viewCapture,radius)); 
}); 


    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) { 
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
      bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(output); 

    final int color = 0xff424242; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 


    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

    return output; 
} 

答えて

0

あなたはこのよう

<stroke android:width="3dp" 
     android:color="#ff000000"/> 

<padding android:left="1dp" 
     android:top="1dp" 
     android:right="1dp" 
     android:bottom="1dp"/> 

<corners android:radius="30px"/> 

のようなXMLで行うことができ、実用的あなたが丸みを帯びたビットマップとImageViewの中で設定を作成することができます。

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) { 
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
    bitmap.getHeight(), Config.ARGB_8888); 
Canvas canvas = new Canvas(output); 

final int color = 0xff424242; 
final Paint paint = new Paint(); 
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
final RectF rectF = new RectF(rect); 
final float roundPx = 12; 

paint.setAntiAlias(true); 
canvas.drawARGB(0, 0, 0, 0); 
paint.setColor(color); 
canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
canvas.drawBitmap(bitmap, rect, rect, paint); 

return output; 
} 

ユニバーサルレイジーローダーの場合は、このワットも使用できます。

DisplayImageOptions options = new DisplayImageOptions.Builder() 
     .displayer(new RoundedBitmapDisplayer(25)) // default 
     .build(); 
+0

私は角の半径を取得しています。シークバーで私はイメージビューの角の半径を増減したい。 – user65

+1

シークバーでこの変数にアクセスすることができます。final float roundPx = 12; –

+0

私はそれにアクセスしています – user65

関連する問題