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

Android邊框裁切的正確姿勢實現(xiàn)示例

 更新時間:2023年02月16日 14:44:18   作者:流浪漢kylin  
這篇文章主要為大家介紹了Android邊框裁切的正確姿勢實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

今天寫什么呢,沒有太好的思路,就隨便寫一些細(xì)節(jié)的點吧。

平時我們都會接觸到的一個東西就是設(shè)置view的邊緣為圓角,因為默認(rèn)的直角比較難看,這個是涉及比較多的場景,其它當(dāng)然也有一些場景需用到非正常邊框的情況,也需要裁切。

1. 設(shè)置圓角邊框

一般我們怎么設(shè)置圓角邊框的

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <stroke
        android:width="0.8dp"
        android:color="#ffffff" />
    <corners android:radius="10dp" />
</shape>

這是我們比較常做的設(shè)置邊框圓角的操作,有沒有過這樣去設(shè)置會不會出問題?其實這樣的操作只不過是改變背景而已,它可能會出現(xiàn)內(nèi)部內(nèi)容穿透的效果。

2. 使用ClipToOutline進(jìn)行裁切

這個是android 5.0之后提出的方法,具體的操作是這樣

public static void setRoundRect(View view) {
    try {
        view.setOutlineProvider(new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 10);
            }
        });
        view.setClipToOutline(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

可以看出就是調(diào)用了view的setOutlineProvider方法和setClipToOutline方法。看這個ViewOutlineProvider,它的注釋是
Interface by which a View builds its Outline, used for shadow casting and clipping.

能明顯看出它就是為了處理陰影和裁切的。其中我們要設(shè)置的話,主要是設(shè)置Outline outline這個對象,我們可以看看它所提供的方法

setRect

先隨便拿一張圖片表示原本的顯示效果來做對比

調(diào)用setRect給原圖進(jìn)行邊緣裁切

outline.setRect(view.getWidth()/4, view.getWidth()/4, view.getWidth()/4 *3, view.getHeight()/4 * 3);

得到這樣的效果,注意,我的原效果是貼邊的,這些裁切之后發(fā)現(xiàn)是不貼邊的

setRoundRect的效果和setRect一樣,就是多了一個參數(shù)用來設(shè)置圓角。這里就不演示了

setOval 調(diào)用setOval,它的傳參和setRect一樣

outline.setOval(view.getWidth()/4, view.getWidth()/4, view.getWidth()/4 *3, view.getHeight()/4 * 3);

可以看到效果

發(fā)現(xiàn)再裁切尺寸的同時并且把圖片切成圓形,我記得很早之前,還沒畢業(yè)時做圓形頭像的時候還需要引用別人的第三方,現(xiàn)在5.0之后直接調(diào)這個就行,多方便。當(dāng)然現(xiàn)在頭像都是用Glide來做。

setAlpha和setConvexPath也一樣,etAlpha是設(shè)置透明度,setConvexPath是設(shè)置路徑,路徑和自定義view一樣用Path,我這邊就不演示了

總結(jié)

Outline相對于shape來說,是真正的實現(xiàn)邊緣裁切的,shape其實只是設(shè)置背景而已,它的view的范圍還是那個正方形的范圍。最明顯的表現(xiàn)于,shape如果內(nèi)容填滿布局,會看到內(nèi)容超出圓角,而Outline不會。當(dāng)然如果你shape配合padding的話肯定也不會出現(xiàn)這種情況。

使用Outline也需要注意,一般的機子會在當(dāng)范圍超過圓之后,會一直顯示圓。比如你設(shè)置radius為50是圓角的效果,但是甚至成100已經(jīng)是整個邊是半圓,這時你設(shè)200會發(fā)現(xiàn)還是半圓,但是在某些機子上200會變成圓錐,所以如果要做半圓的效果也需要去計算好radius

以上就是Android邊框裁切的正確姿勢實現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Android邊框裁切的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論