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

Android切圓角的幾種常見方式總結(jié)

 更新時間:2019年12月12日 08:38:20   作者:chendroid  
這篇文章主要給大家介紹了關(guān)于Android切圓角的常見方式,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

Android 中有哪些可以切圓角的實現(xiàn)方式呢?

本文總結(jié)一下常用的方式。

以下內(nèi)容分為以下幾部分:

  1. 利用 Drawable 的 shape xml 實現(xiàn)
  2. CardView 實現(xiàn)圓角
  3. fresco 中的 SimpleDraweeView 實現(xiàn)圓角
  4. 利用 View 的 ViewOutlineProvider 實現(xiàn)圓角
  5. 總結(jié)

1. 利用 Drawable 的 shape xml 實現(xiàn)

很多時候,我們可以自定義一些 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 就是我們實現(xiàn)的圓角,這里指定圓角的半徑為 15dp。

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

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

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

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

效果為:


drawable 圓角

本質(zhì)是在 background 上加了圓角。

2. CardView 的圓角

CardView 是自帶圓角實現(xiàn)的,我們只需要在它的定義中加一句 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>

設(shè)置該 CardView 圓角半徑為 16dp,

效果圖如下:

cardView 圓角

3. fresco 中的 SimpleDraweeView

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

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

實現(xiàn)代碼:

 <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" />

這里設(shè)置圖片圓形邊角為 3dp

實現(xiàn)效果為:

SimpleDraweeView 圓角

4. 利用 View 的 ViewOutlineProvider 實現(xiàn)圓角

這種實現(xiàn)方式,本質(zhì)上是修改了 View 的輪廓。

代碼實現(xiàn):

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

為整個 View 添加上圓角。

實現(xiàn)效果為:

outlineProvider 圓角

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

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

利用 ViewOutlineProvider 的實現(xiàn)圓角,本質(zhì)上是在 View 的畫布上畫了一個圓角的矩形。

setRoundRect(xxx)

同時 outline 還可以畫其他的一些內(nèi)容。

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

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

既然提到了 ViewOutlineProvider , 那就得提一下 StateListAnimator 這個動畫得效果, 感興趣得自己去搜索一下??蓞⒖?StateListAnimator

5.總結(jié)

上面總結(jié)了一下常見的 Android 中實現(xiàn)圓角的方式,在使用過程中,怎么方便怎么來。

我個人最近比較喜歡用 ViewOutlineProvider, 對輪廓進行剪切,高效且方便。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Android實現(xiàn)視頻的畫中畫功能

    Android實現(xiàn)視頻的畫中畫功能

    手機觀看視頻的時候,有些工作需要溝通,或者參與搶購活動,同時為了不錯過視頻精彩片段,會選擇畫中畫模式,這篇文章主要為大家詳細介紹了Android實現(xiàn)視頻的畫中畫功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Kotlin使用flow實現(xiàn)倒計時功能(示例詳解)

    Kotlin使用flow實現(xiàn)倒計時功能(示例詳解)

    這篇文章主要介紹了Kotlin使用flow實現(xiàn)倒計時功能,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Android 游戲引擎libgdx 資源加載進度百分比顯示案例分析

    Android 游戲引擎libgdx 資源加載進度百分比顯示案例分析

    因為案例比較簡單,所以簡單用AndroidApplication -> Game -> Stage 搭建框架感興趣的朋友可以參考下
    2013-01-01
  • Android中Retrofit庫的高級使用與原理

    Android中Retrofit庫的高級使用與原理

    在 Android 開發(fā)中,網(wǎng)絡(luò)請求是一個極為關(guān)鍵的部分,Retrofit 作為一個強大的網(wǎng)絡(luò)請求庫,能夠簡化開發(fā)流程,提供高效的網(wǎng)絡(luò)請求能力,本文將深入介紹 Retrofit 的高級使用與原理,幫助讀者更全面地理解和應(yīng)用這一庫,需要的朋友可以參考下
    2023-08-08
  • Android App后臺震動的實現(xiàn)步驟詳解

    Android App后臺震動的實現(xiàn)步驟詳解

    這篇文章主要為大家介紹了Android App后臺震動的實現(xiàn)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • phonegap教程使用jspdf庫在應(yīng)用中生成pdf文件(pdf生成方法)

    phonegap教程使用jspdf庫在應(yīng)用中生成pdf文件(pdf生成方法)

    在PhoneGap應(yīng)用中生成pdf文件,實現(xiàn)起來很簡單,使用JSPDF這個標準的JavaScript類庫來實現(xiàn)這個功能
    2014-01-01
  • Android控件PopupWindow模仿ios底部彈窗

    Android控件PopupWindow模仿ios底部彈窗

    這篇文章主要為大家詳細介紹了Android控件PopupWindow仿ios底部彈窗效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android Compose自定義TextField實現(xiàn)自定義的輸入框

    Android Compose自定義TextField實現(xiàn)自定義的輸入框

    眾所周知Compose中默認的TextField和OutlineTextField樣式并不能滿足所有的使用場景,所以自定義TextField就成了必備技能。本文將自定義TextField實現(xiàn)自定義的輸入框,感興趣的可以了解一下
    2022-03-03
  • Android中各種Time API詳細

    Android中各種Time API詳細

    這篇文章要分享的是Android中各種Time API, SystemClock.uptimeMillis()、System.nanoTime(),下面我們就來看看他們到底有什么區(qū)別吧
    2021-10-10
  • 實例探究Android開發(fā)中Fragment狀態(tài)的保存與恢復(fù)方法

    實例探究Android開發(fā)中Fragment狀態(tài)的保存與恢復(fù)方法

    這篇文章主要介紹了實例探究Android開發(fā)中Fragment狀態(tài)的保存與恢復(fù)方法,或許開發(fā)者們對Fragment的操作都比較熟悉,但onSaveInstanceState()方法并不能夠很好地保存Fragment狀態(tài),需要的朋友可以參考下
    2016-04-04

最新評論