在開發(fā)過程中有時(shí)需要將圖片顯示成圓角圖片,一般我們可以通過在xml中設(shè)置drawable shape即可,但今天我給出另一種方法,用java代碼動(dòng)態(tài)去設(shè)置圓角,順便做個(gè)簡(jiǎn)單的筆記。
主要原理是使用系統(tǒng)自帶api:
RoundedBitmapDrawableFactory
先上效果圖:

由于比較簡(jiǎn)單,直接給出實(shí)現(xiàn)方式:
public class MainActivity extends AppCompatActivity { private ImageView mImgRectRound; private ImageView mImgRound; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImgRectRound = (ImageView) findViewById(R.id.img_rect_rounded); mImgRound = (ImageView) findViewById(R.id.img_rounded); rectRoundBitmap(); roundBitmap(); } private void rectRoundBitmap(){ //得到資源文件的BitMap Bitmap image= BitmapFactory.decodeResource(getResources(),R.drawable.dog); //創(chuàng)建RoundedBitmapDrawable對(duì)象 RoundedBitmapDrawable roundImg =RoundedBitmapDrawableFactory.create(getResources(),image); //抗鋸齒 roundImg.setAntiAlias(true); //設(shè)置圓角半徑 roundImg.setCornerRadius(30); //設(shè)置顯示圖片 mImgRectRound.setImageDrawable(roundImg); } private void roundBitmap(){ //如果是圓的時(shí)候,我們應(yīng)該把bitmap圖片進(jìn)行剪切成正方形, 然后再設(shè)置圓角半徑為正方形邊長(zhǎng)的一半即可 Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.dog); Bitmap bitmap = null; //將長(zhǎng)方形圖片裁剪成正方形圖片 if (image.getWidth() == image.getHeight()) { bitmap = Bitmap.createBitmap(image, image.getWidth() / 2 - image.getHeight() / 2, 0, image.getHeight(), image.getHeight()); } else { bitmap = Bitmap.createBitmap(image, 0, image.getHeight() / 2 - image.getWidth() / 2, image.getWidth(), image.getWidth()); } RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap); //圓角半徑為正方形邊長(zhǎng)的一半 roundedBitmapDrawable.setCornerRadius(bitmap.getWidth() / 2); //抗鋸齒 roundedBitmapDrawable.setAntiAlias(true); mImgRound.setImageDrawable(roundedBitmapDrawable); }}布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.cjl.roundedbitmap.MainActivity"> <ImageView android:id="@+id/img_rect_rounded" android:layout_width="200dp" android:layout_height="300dp" android:layout_marginTop="20dp" android:layout_gravity="center_horizontal"/> <ImageView android:id="@+id/img_rounded" android:layout_marginTop="20dp" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center_horizontal"/></LinearLayout>
如有問題,歡迎指正,謝謝。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選