2016-08-06 52 views
0

我想设置图像视角的圆角半径并控制seekbar上的半径。当seekbar进行时,拐角半径应该增加,反之亦然。 目前m在增加seekbar时获得拐角半径。但当搜索栏移回时,它不会将imageview设置为其原始状态。如何设置图像视角的圆角半径

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

您可以通过XML不喜欢这种方式

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

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

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

务实您可以创建圆角位图和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; 
} 

对于通用懒惰加载器,你也可以使用这个wat。

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

我得到拐角半径。但seekbar我想增加和减少imageview的角落半径。 – user65

+1

你可以在你的Seek bar上访问这个变量final float roundPx = 12; –

+0

我正在访问它 – user65