欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android圓角設置方法看著一篇文章就夠了

 更新時間:2023年02月09日 10:07:30   作者:~yportnE  
我們在實際工作中,android經常有需要實現(xiàn)圓角的場景,下面這篇文章主要給大家介紹了關于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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論