آموزش ساخت عکس گرد در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت عکس گرد در اندروید می پردازیم همانطور که می دانید Imageview را نمی توان به شکل گرد نمایش داد البته می توان radius آن را زیاد کرد ولی شکل آن گرد نمی شود در ادامه با ما همراه باشید.
در این آموزش ما از کتاب خانه استفاده نمی کنیم بلکه خودمان کلاس سفارشی را خواهیم نوشت.
یک کلاس جاوا به نام RoundedImageView.java ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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 باید مثل زیر عمل کنید.
1 2 3 4 5 6 | <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 قرار دهید.
برای اینکه از طریق کد به آن دسترسی داشته باشیم مثل زیر عمل می کنیم.
1 2 3 | ImageView = imageViewRound=(ImageView)findViewById(R.id.<i>imageView_round</i>); Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.pic1); imageViewRound.setImageBitmap(icon); |
به همین سادگی !
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
2 پاسخ به “آموزش ساخت عکس گرد در اندروید”