آموزش ساخت عکس گرد در اندروید

امتیاز 5.00 ( 1 رای )

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت عکس گرد در اندروید می پردازیم همانطور که می دانید Imageview را نمی توان به شکل گرد نمایش داد البته می توان radius آن را زیاد کرد ولی شکل آن گرد نمی شود در ادامه با ما همراه باشید.
در این آموزش ما از کتاب خانه استفاده نمی کنیم بلکه خودمان کلاس سفارشی را خواهیم نوشت.
یک کلاس جاوا به نام RoundedImageView.java ایجاد کرده و کدهای زیر را در آن قرار دهید.

package ir.programchi;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
public class RoundedImageView extends ImageView {
       public RoundedImageView(Context ctx, AttributeSet attrs) {
              super(ctx, attrs);
       }
       @Override
       protected void onDraw(Canvas canvas) {
              Drawable drawable = getDrawable();
              if (drawable == null) {
                     return;
              }
              if (getWidth() == 0 || getHeight() == 0) {
                     return;
              }
              Bitmap b = ((BitmapDrawable) drawable).getBitmap();
              Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
              int w = getWidth(), h = getHeight();
              Bitmap roundBitmap = getRoundedCroppedBitmap(bitmap, w);
              canvas.drawBitmap(roundBitmap, 0, 0, null);
       }
       public static Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) {
              Bitmap finalBitmap;
              if (bitmap.getWidth() != radius || bitmap.getHeight() != radius)
                     finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius,
                                  false);
              else
                     finalBitmap = bitmap;
              Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
                           finalBitmap.getHeight(), Config.ARGB_8888);
              Canvas canvas = new Canvas(output);
              final Paint paint = new Paint();
              final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
                           finalBitmap.getHeight());
              paint.setAntiAlias(true);
              paint.setFilterBitmap(true);
              paint.setDither(true);
              canvas.drawARGB(0, 0, 0, 0);
              paint.setColor(Color.parseColor("#BAB399"));
              canvas.drawCircle(finalBitmap.getWidth() / 2 + 0.7f,
                           finalBitmap.getHeight() / 2 + 0.7f,
                           finalBitmap.getWidth() / 2 + 0.1f, paint);
              paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
              canvas.drawBitmap(finalBitmap, rect, rect, paint);
              return output;
       }
}

کد بالا یک عکس گرد را برای شما ایجاد می کند محاسبات بالا عکس را دقیقا در وسط و همینطور گرد تنظیم می کند.
حالا برای استفاده از کلاس بالا در layout باید مثل زیر عمل کنید.

<ir.programchi.RoundedImageView
        android:id="@+id/imageView_round"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="15dp"
        android:src="@drawable/ic_launcher" />

دقت کنید در بالا باید نام پکیج خودتان را به جای ir.programchi قرار دهید.
برای اینکه از طریق کد به آن دسترسی داشته باشیم مثل زیر عمل می کنیم.

ImageView = imageViewRound=(ImageView)findViewById(R.id.imageView_round);
Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.pic1);
imageViewRound.setImageBitmap(icon);

 
به همین سادگی !
 
این آموزش هم به پایان رسید.
 
موفق و پیروز باشید.
 
 

مطالعه بیشتر