Android圓角設置方法看著一篇文章就夠了
方法1:Outline
getView(R.id.image_view_1).setClipToOutline(true); getView(R.id.image_view_1).setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), radius); } });
實現(xiàn)方法:
1) 要設置圓角的View.setClipToOutline(true)
2)要設置圓角的View.setOutlineProvider(ViewOutlineProvider provider)
ViewOutlineProvider 只有1個抽象方法,通過Outline.setRoundRect設置圓角:
public abstract void getOutline(View view, Outline outline);
方法特點:
1)對View設置,可View、ViewGroup
2)對4個角同時設置,不能單獨設置單個角
方法2:CardView
<androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="100dp" android:layout_marginTop="@dimen/dp_6" app:cardCornerRadius="@dimen/dp_24" app:cardElevation="0dp" app:cardUseCompatPadding="false"> <ImageView android:id="@+id/image_view_2" android:layout_width="match_parent" android:layout_height="match_parent" android:src="#93D5DC"/> </androidx.cardview.widget.CardView>
實現(xiàn)方法:
1)對需要設置圓角的View,使用CardView包裹
2)對CardView設置,設置圓角、去除陰影和padding
app:cardCornerRadius="@dimen/dp_24" app:cardElevation="0dp" app:cardUseCompatPadding="false"
方法特點:
1)對View設置,可View、ViewGroup
2)對4個角同時設置,不能單獨設置單個角
方法3:自定義Drawable
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="@dimen/dp_24"/> <solid android:color="#2A5CAA"/> </shape>
實現(xiàn)方法:
1)自定義shape,設置radius
<corners android:radius="@dimen/dp_24"/>
方法特點:
1)對生成的圖片進行設置
2)可對4角同時設置,也可對4角單獨設置
<corners android:bottomLeftRadius="@dimen/dp_24" android:bottomRightRadius="@dimen/dp_24" android:topLeftRadius="@dimen/dp_24" android:topRightRadius="@dimen/dp_24"/>
方法4:GradientDrawable和RoundedBitmapDrawable
//GradientDrawable if(true) { //同時設置四個角 GradientDrawable drawable = new GradientDrawable(); drawable.setShape(GradientDrawable.RECTANGLE); drawable.setCornerRadius(radius); drawable.setColor(0xFFEEA2A4); ((ImageView) getView(R.id.image_view_4)).setImageDrawable(drawable); } else { //單獨設置四個角 GradientDrawable drawable = new GradientDrawable(); drawable.setShape(GradientDrawable.RECTANGLE); drawable.setColor(0xFFEEA2A4); float[] radii = new float[]{ radius, radius, 0F, 0F, 0F, 0F, radius, radius }; drawable.setCornerRadii(radii); ((ImageView) getView(R.id.image_view_4)).setImageDrawable(drawable); }
實現(xiàn)方法:GradientDrawable
1)對GradientDrawable設置圓角drawable.setCornerRadius(radius)
2)或者對GradientDrawable設置float[],對4角單獨設置
float[] radii = new float[]{ radius, radius, 0F, 0F, 0F, 0F, radius, radius }; drawable.setCornerRadii(radii);
方法特點:GradientDrawable
1)對圖片進行設置
2)可對4角同時設置,也可對4角單獨設置
實現(xiàn)方法:RoundedBitmapDrawable
RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getResources(), ResourceUtils.drawable2Bitmap(ResourceUtils.getDrawable(R.drawable.drawable_90_corner_2))); drawable.setCornerRadius(radius); ((ImageView) getView(R.id.image_view_4_2)).setImageDrawable(drawable);
1)通過RoundedBitmapDrawableFactory創(chuàng)建RoundedBitmapDrawable,提供了三個實現(xiàn)方法:
public static RoundedBitmapDrawable create(@NonNull Resources res, @Nullable Bitmap bitmap) public static RoundedBitmapDrawable create(@NonNull Resources res, @NonNull String filepath) public static RoundedBitmapDrawable create(@NonNull Resources res, @NonNull InputStream is)
區(qū)別在于第2個參數(shù):Bitmap、filepath、InputStream
2)對RoundedBitmapDrawable設置setCornerRadius(radius)
方法特點:RoundedBitmapDrawable
1)對圖片進行設置
2)對4個角同時設置,不能單獨設置單個角
方法5:3方庫,本例用Glide
//Glide if(true) { //同時設置四個角 Glide.with(this) .asDrawable() .load(R.drawable.drawable_90_corner) .transform(new RoundedCorners(radius)) .into((ImageView) getView(R.id.image_view_5)); } else { //單獨設置四個角 Glide.with(this) .asDrawable() .load(R.drawable.drawable_90_corner) .transform(new GranularRoundedCorners(radius, radius, radius, radius)) .into((ImageView) getView(R.id.image_view_5)); }
實現(xiàn)方法:
1)引入Glide,使用Glide加載圖片
2)設置transform(new RoundedCorners(radius))或者transform(new GranularRoundedCorners(radius, radius, radius, radius))
方法特點:
1)對圖片進行設置
2)可對4角同時設置,也可對4角單獨設置,只是方法不同
不同方法效果對比:
代碼地址:
AndroidJavaKotlin: 深度學習Android、Java、Kotlin (gitee.com)
總結
到此這篇關于Android圓角設置方法的文章就介紹到這了,更多相關Android圓角設置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android實現(xiàn)長按back鍵退出應用程序的方法
這篇文章主要介紹了Android實現(xiàn)長按back鍵退出應用程序的方法,實例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下2015-05-05Android實現(xiàn)打開手機淘寶并自動識別淘寶口令彈出商品信息功能
最近項目經理給我們安排一個活兒,基于Android開發(fā)實現(xiàn)打開手機淘寶,并自動識別淘口令,彈出商品信息,今天小編就抽空給大家分享下這個需求是怎么實現(xiàn)的,需要的朋友參考下吧2017-11-11Android懸浮窗按鈕實現(xiàn)點擊并顯示/隱藏多功能列表
這篇文章主要為大家詳細介紹了Android懸浮窗按鈕實現(xiàn)點擊并顯示/隱藏多功能列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android多功能時鐘開發(fā)案例(實戰(zhàn)篇)
這篇文章主要為大家詳細介紹了Android多功能時鐘開發(fā)案例,開發(fā)了時鐘、鬧鐘、計時器和秒表,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05android編程開發(fā)之全屏和退出全屏的實現(xiàn)方法
這篇文章主要介紹了android編程開發(fā)之全屏和退出全屏的實現(xiàn)方法,以實例形式較為詳細的分析了Android全屏及退出全屏的頁面布局與功能實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11Android中實現(xiàn)長按修改ListView對象的內容
這篇文章主要給大家介紹了在Android中實現(xiàn)長按修改ListView對象內容的相關資料,文中給出了完整的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-02-02