我有一個ListView
其中有ImageView
,ImageView
圖像從服務器獲取後動態加載。 現在,我想要這些圖像,任何大小,適合一個圓形框架,如何做到這一點? 這裏有一個樣品的PIC我想如何使圖像適合Android的圓形框架
回答
與以往答案的幫助下,我來到了這個solution.Hope它幫助別人:
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
public class CircleImage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.circle_layout);
ImageView img1 = (ImageView) findViewById(R.id.imageView1);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.hair_four);
Bitmap resized = Bitmap.createScaledBitmap(bm, 100, 100, true);
Bitmap conv_bm = getRoundedRectBitmap(resized, 100);
img1.setImageBitmap(conv_bm);
// TODO Auto-generated method stub
}
public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int pixels) {
Bitmap result = null;
try {
result = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
int color = 0xff424242;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, 200, 200);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawCircle(50, 50, 50, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
} catch (NullPointerException e) {
} catch (OutOfMemoryError o) {
}
return result;
}
}
要獲得更有效的實現,請參閱Romain Guy最近的[** Android Recipe#1,帶圓角的圖像**]( http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/)博客文章。主要區別在於它使用「BitmapShader」來直接控制可見的「紋理」區域,從而將繪圖邏輯簡化爲單次繪製調用。 –
嘿Sanghita,我遇到了相同的要求,碰巧使用你的代碼,雖然它工作正常,因爲顯示圖像我有一個問題。我用我的代替以下代碼行來增加圖像視圖爲canvas.drawCircle(90 ,90,90,油漆);因爲canvas.drawCircle(50,50,50,paint);給了一個小的顯示視圖。然而只有四分之一的圖像顯示在imageview.Can你請幫忙? – joy
將以下行更改爲:Bitmap resized = Bitmap.createScaledBitmap(bm,600,600,true); 位圖conv_bm = getRoundedRectBitmap(resized,600);結果= Bitmap.createBitmap(950,950,Bitmap.Config.ARGB_8888); Rect rect = new Rect(0,0,650,650); canvas.drawCircle(300,300,300,paint); – Sanghita
試試這個代碼是什麼:如果你想要一個實際的圈子,那麼你可以通過100px
作爲參數
public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int pixels) {
try {
result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),
Bitmap.Config.ARGB_8888);
canvas = new Canvas(result);
color = 0xff424242;
paint = new Paint();
rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
rectF = new RectF(rect);
roundPx = pixels;
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);
} catch (NullPointerException e) {
// return bitmap;
} catch (OutOfMemoryError o){}
return result;
}
。
我們可以從XML代碼管理的圖像的高度和寬度,並且從Java代碼繪製圓/橢圓形等
<ImageView
android:id="@+id/imageView1"
android:layout_width="@dimen/width"
android:layout_height="@dimen/height"
/>
爲橢圓形視圖
ImageView img1 = (ImageView) findViewById(R.id.imageView1);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.user_image);
Bitmap conv_bm = getRoundedBitmap(bm);
img1.setImageBitmap(conv_bm);
public static Bitmap getRoundedBitmap(Bitmap bitmap)
{
final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int color = Color.RED;
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.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
}
public static Bitmap getCircleBitmap(Bitmap bitmap) {
final Bitmap circuleBitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getWidth(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(circuleBitmap);
final int color = Color.RED;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getWidth());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return circuleBitmap;
}
- 1. Android的圓形邊框圓形圖像
- 2. 如何在不規則形狀的框架中適合圖像
- 3. 圓形框架中的圖像iOS
- 4. 圖像不適合UIImageView的框架
- 5. 如何在圓形按鈕物鏡內適合圖像c
- 6. 如何使對話框適合圖像?
- 7. UIimageview適合圓形
- 8. 如何裁剪圓形圖像openvc android
- 9. 使imagemagick中的圖像圓形邊框
- 10. Android,如何使圖像適合屏幕?
- 11. Matlab適合圖形圖像
- 12. 使圖像完全無邊框圓形
- 13. Android:環形內部的圓形圖像
- 14. 如何使框架適合曲線?
- 15. 如何刪除圖像形成框架
- 16. 如何適合方形視圖到圓角的佈局clipcorners
- 17. 圓形圖像?
- 18. 拉伸形狀適合框架?
- 19. 使圖像適合長方形
- 20. Android圓形圖像列表視圖
- 21. 如何使用android創建圓形圖像?
- 22. 如何將圖標放置在圓形圖像android的頂部?
- 23. CSS - 如何在圓形圖像周圍添加圓形邊框/輪廓?
- 24. 在瀏覽器中縮放圓形圖像 - 適用於一幅圖像,不適合2幅圖像
- 25. 如何爲圓形圖像視圖繪製邊框?
- 26. 如何在android中創建一個帶有圓形的方形框架按鈕?
- 27. 圓形圖像或邊框半徑100%?
- 28. 將邊框添加到圓形圖像
- 29. 將邊框添加到圓形圖像
- 30. 帶有兩個邊框的Android圓形圖像查看收藏
試試這個。 http://stackoverflow.com/questions/5882180/how-to-set-bitmap-in-circular-imageview 希望它會幫助你 – 2012-12-27 08:06:08