亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中實現切圓角

發布時間:2021-06-09 18:01:43 來源:億速云 閱讀:313 作者:Leah 欄目:移動開發

本篇文章為大家展示了如何在Android中實現切圓角,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1. 利用 Drawable 的 shape xml 實現

很多時候,我們可以自定義一些 drawable , 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 <corners android:radius="15dp"/>
 <solid android:color="#FFFFFF"/>
 <stroke android:width="1dp" android:color="#EBEBEB"/>
</shape>

其中,corners 就是我們實現的圓角,這里指定圓角的半徑為 15dp。

solid 是指填充色,這里為白色;

stroke 為drawable 的邊緣寬度和顏色設置,這里為 1dp 顏色比白色黑一點。

如果知識想要 「圓角」的話,可以不需要指定 stroke

然后在我們需要的 View 上,設置它的 background 為該 drawable 即可.

效果為:

如何在Android中實現切圓角
drawable 圓角

本質是在 background 上加了圓角。

2. CardView 的圓角

CardView 是自帶圓角實現的,我們只需要在它的定義中加一句 app:cardCornerRadius="8dp" 即可。

代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <androidx.cardview.widget.CardView
 android:layout_width="256dp"
 android:layout_height="128dp"
 app:cardBackgroundColor="#0084FF"
 app:cardCornerRadius="16dp"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

設置該 CardView 圓角半徑為 16dp,

效果圖如下:

如何在Android中實現切圓角

cardView 圓角

3. fresco 中的 SimpleDraweeView

fresco 是一個強大的圖片庫,里面的 SimpleDraweeView 常用來加載圖片。

SimpleDraweeView 實現了很多功能,其中一個就是實現了圓角屬性 roundedCornerRadius

實現代碼:

 <com.facebook.drawee.view.SimpleDraweeView
 android:layout_width="256dp"
 android:layout_height="128dp"
 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintEnd_toEndOf="parent"
 app:layout_constraintStart_toStartOf="parent"
 app:layout_constraintTop_toTopOf="parent"
 app:actualImageScaleType="centerCrop"
 app:roundedCornerRadius="3dp" />

這里設置圖片圓形邊角為 3dp

實現效果為:

如何在Android中實現切圓角

SimpleDraweeView 圓角

4. 利用 View 的 ViewOutlineProvider 實現圓角

這種實現方式,本質上是修改了 View 的輪廓。

代碼實現:

itemView.outlineProvider = object : ViewOutlineProvider() {
 override fun getOutline(view: View, outline: Outline) {
 outline.setRoundRect(0, 0, view.width, view.height, 5.dp.toFloat())
 }
}
// 打開開關
itemView.clipToOutline = true

為整個 View 添加上圓角。

實現效果為:

如何在Android中實現切圓角

outlineProvider 圓角

這樣的好處是,不需要給里面的子 view 設置圓角,在最外層的 View 設置為圓角即可。

更大的好處是:比使用了第一種方式 drawable 的 xml 少了一層過度繪制。因為省去了設置的 background

利用 ViewOutlineProvider 的實現圓角,本質上是在 View 的畫布上畫了一個圓角的矩形。

setRoundRect(xxx)

同時 outline 還可以畫其他的一些內容。

outline.setRect(xxx)// 畫矩形
outline.setRoundRect(xxx)// 畫圓角矩形
outline.setOval(xxx) // 畫橢圓

同時,因為 outline.setRoundRect(0, 0, view.width, view.height, 5.dp.toFloat()) 是在一個矩形上畫的圓角。因為,當我們的矩形減小或增大時,有些圓角是沒有區域可畫,會形成部分圓角存在的情況。

既然提到了 ViewOutlineProvider , 那就得提一下 StateListAnimator 這個動畫得效果, 感興趣得自己去搜索一下。可參考 StateListAnimator

上述內容就是如何在Android中實現切圓角,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

林甸县| 崇州市| 永川市| 景德镇市| 精河县| 关岭| 汕头市| 青岛市| 巴林右旗| 神木县| 大英县| 绥江县| 兴化市| 岳池县| 和静县| 新巴尔虎左旗| 泽普县| 绥化市| 贵港市| 西贡区| 丰县| 德保县| 云安县| 保靖县| 大关县| 临武县| 宜章县| 富锦市| 乌恰县| 洱源县| 汝州市| 永州市| 西贡区| 临湘市| 磴口县| 横山县| 金门县| 锦屏县| 哈尔滨市| 自贡市| 永济市|