2016-08-06 11 views
0

Ich möchte den Eckenradius für die Bildansicht festlegen und den Radius auf der Suchleiste steuern. Wenn die Suchleiste fortschreitet, sollte der Eckenradius zunehmen und umgekehrt. Momentan wird der Eckenradius bei wachsender Suchleiste erhöht. Wenn der Suchbalken jedoch zurückbewegt wird, wird der Imageview nicht in den ursprünglichen Zustand versetzt.So stellen Sie den Eckenradius für die Bildansicht ein

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; 
} 

Antwort

0

Sie von XML wie auf diese Weise tun können

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

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

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

und pragmatischer können Sie abgerundete Bitmap erstellen und in Image gesetzt.

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; 
} 

Für Universal Lazy Loader können Sie dieses Wat auch verwenden.

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

Ich bekomme Eckenradius. aber auf seekbar möchte ich den Eckenradius der Bildansicht vergrößern und verkleinern. – user65

+1

Sie können auf diese Variable in Ihrer Seek-Leiste zugreifen final float roundPx = 12; –

+0

Ich greife darauf zu – user65

Verwandte Themen