1. 程式人生 > >【Android應用】【Shape使用總結】

【Android應用】【Shape使用總結】

在Android程式開發中,我們經常會去用到Shape這個東西去定義各種各樣的形狀。

首先我們瞭解一下Shape下面有哪些標籤,都代表什麼意思:

solid:填充android:color指定填充的顏色

gradient:漸變
android:startColor和android:endColor分別為起始和結束顏色,

android:angle是漸變角度,必須為45的整數倍
另外漸變預設的模式為android:type="linear",即線性漸變,

可以指定漸變為徑向漸變,android:type="radial",徑向漸變需要指定半徑android:gradientRadius="50"。


angle值對應的位置如圖:


stroke:描邊
android:width="2dp" 描邊的寬度,android:color 描邊的顏色。
我們還可以把描邊弄成虛線的形式,設定方式為:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'這樣一個橫線的寬度,android:dashGap表示之間隔開的距離

corners:圓角
android:radius為角的弧度,值越大角越圓。
我們還可以把四個角設定成不同的角度,

同時設定五個屬性,則Radius屬性無效

android:Radius="20dp"                           設定四個角的半徑

android:topLeftRadius="20dp"              設定左上角的半徑 
android:topRightRadius="20dp"           設定右上角的半徑 
android:bottomLeftRadius="20dp"      設定右下角的半徑 
android:bottomRightRadius="20dp"    設定左下角的半徑

padding:間隔
可以設定上下左右四個方向的間隔

在這裡我們來看一個簡單的小例子,ShapDemo,在drawable資料夾下面先定義兩個xml檔案:

button_bg.xml的內容如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
	
    <!-- 填充 -->
    <solid android:color="#ff9d77" /> <!-- 定義填充的顏色值 -->
	
    <!-- 描邊 -->
    <stroke
        android:width="2dp"	
        android:color="#fad3cf" /> <!-- 定義描邊的寬度和描邊的顏色值 -->
	
	<!-- 圓角 -->
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" /> <!-- 設定四個角的半徑 -->
	
  	<!-- 間隔 -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" /> <!-- 設定各個方向的間隔 -->

</shape>

button_pressed_bg.xml的內容如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 漸變 -->
    <gradient
        android:endColor="#FFFFFF"
        android:gradientRadius="50"
        android:startColor="#ff8c00"
        android:type="radial" />
    
    <!-- 描邊 -->
    <stroke
        android:dashGap="3dp"
        android:dashWidth="5dp"
        android:width="2dp"
        android:color="#dcdcdc" />
    
    <!-- 圓角 -->
    <corners android:radius="5dp" />
	
    <!-- 間隔  -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

這裡說明一點,在描邊裡面設定了dash引數,使得圖形的邊變成了虛線。

在drawable資料夾下新增一個selector選擇器button.xml檔案,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_pressed_bg" android:state_pressed="true"></item>
    <item android:drawable="@drawable/button_bg"></item>

</selector>

這個檔案的意思以前講過,normal(正常)情況下就顯示button_bg,被press(按下)情況下就顯示button_pressed_bg。

我們再來看一下layout目錄下的activity_main.xml的內容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button"
        android:text="TestShapeButton" />

</RelativeLayout>

直接將background指定為drawable資料夾下的button.xml。

程式執行截圖如下:


附上例子工程原始碼:

相關推薦

Android應用Shape使用總結

在Android程式開發中,我們經常會去用到Shape這個東西去定義各種各樣的形狀。 首先我們瞭解一下Shape下面有哪些標籤,都代表什麼意思: solid:填充android:color指定填充的顏

Android 應用開發 ActionBar 樣式具體解釋 -- 樣式 主題 簡單介紹 Actionbar 的 icon logo 標題 菜單樣式改動

detail sub str 進度條 代碼分析 extc dst 模式 html 作者 : 萬境絕塵 ([email protected]/* */)轉載請著名出處 : http://blog.csdn.net/shulianghan/article/deta

Android個人理解(八)應用調用不同組件的方法

返回 使用 turn 數字 現實 rpc 文件夾 cas rgb 如果情景: 創建兩個應用appA和appB,appA包括一個Service,此Service有一個堵塞方法每隔10秒鐘產生一個隨機數字,例如以下: public int getRandom

Android應用開發技術:基礎構建命令行下的Android應用開發

star andro all class文件 abs 2.3 pil data 資源 作者:郭孝星 微博:郭孝星的新浪微博 郵箱:[email protected]/* */ 博客:http://blog.csdn.net/allenw

Android應用開發Android Studio

作者 : 韓曙亮要點總結 : -- 熟練使用快捷鍵 : 在任何程式設計環境中, 熟練使用環境提供的快捷鍵會大大提高程式設計效率, 在 Android Studio 中也不例外, 熟練使用其快捷鍵是 An

Android應用開發-(9)應用程式安裝解除安裝原理

本文粗體部分來自網路上的一篇文章,已不知出處,知道的告知,在此謝謝原作者。引出安裝解除安裝的原理之前,先實現一個簡單的安裝解除安裝應用程式的功能。文章是我之前寫的一篇部落格,這裡就不在敘述,只補充幾點: 1、由於程式碼中用到了PackageInstallObserver,PackageInstallObse

Android應用開發-(18)靜默方式實現批量安裝解除安裝應用程式

     前段時間做了一個批量安裝解除安裝應用程式的小應用,由於安裝解除安裝應用程式的部分API是隱藏的,所以必須在ubuntu下下載Android系統原始碼,並編譯之後使用MM命令編譯生成APK檔案,其實也難。思路是這樣的,在XX/packages/apps目錄下有一個Pa

Android應用開發Instrumentation簡單的模擬按鍵傳送訊息

   前段時間做了一個PSTN通話的應用程式,PAD連線座機實現通話功能。座機上有上翻、下翻通訊錄的功能。通訊錄用的是Google預設的。在不改動通訊錄的情況下只有使用模擬按鍵來發送訊息。程式碼很簡單,共享下!! publicclass MenuDemoActivity extends Activity

Android應用開發RecycleView API 翻譯 (文件翻譯)

Returns whether RecyclerView is currently computing a layout.If this method returns true, it means that RecyclerView is in a lockdown state and any attempt

Android 應用開發GitHub 優秀的 Android 開源專案

主要介紹那些不錯個性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditText、TableView、Ac

android應用——設定控制元件的透明度

1、Button或者ImageButton的背景透明或者半透明 半透明:<Button android:background="#e0000000"···> 透明:<Button android:background="#00000000"···&

Android應用開發-(16)如何繞開Google Play地區限制

    Google Market自從升級為Google Play,改進了很多功能,我們比較關注的可能還是關於下載的限制。比如說要下某個應用程式,發現所在的地區受到限制,又或者之前曾經用過的應用程式在Google Play上搜不到了。那該怎麼辦呢?這篇文章就來分析這個問題。其

Android 應用開發BluetoothDevice詳解

一. BluetoothDevice簡介1. 繼承關係public static Class BluetoothDevice extends Object implement Parcelable該類實

Android 應用開發Android

總結了Android中常用的按鈕用法示例原始碼下載地址 :-- GitHub : https://github.com/han1202012/Button_Test.git.作者 :萬境絕塵 .一. B

Android應用監聽軟鍵盤彈起與關閉

【背景】 在很多App開發過程中需要在Activity中監聽Android裝置的軟鍵盤彈起與關閉,但是Android似乎沒有提供相關的的監聽API給我們來呼叫,本文提供了一個可行的辦法來監聽軟鍵盤的彈

雅思英文常錯詞匯總結

asi migration arch man mut 總結 list 詞匯 匯總 【Word List 1】 hierarchy n.領導層;層次;等級 philosophy n.哲學;哲理 immigration n.外來的移民;移居 physician n.內科醫生,醫

Android開發—智能家居系列(二):用手機對WIFI模塊進行配置

名稱 ash 端口 clas 方式 mac class 二階 target 【Android開發—智能家居系列】(二):用手機對WIFI模塊進行配置 http://blog.csdn.net/u010924834/article/details/4949672

譜聚類算法總結

logs 缺點 文字檢測 什麽 spa 公司 聚類 16px 總結 前言:以前只是調用過譜聚類算法,我也不懂為什麽各家公司都問我一做文字檢測的這個算法具體咋整的,沒整明白還給我掛了哇擦嘞?訊飛和百度都以這個理由刷本寶,今天一怒把它給整吧清楚了,下次誰再問來!說不暈你算我輸!

單體應用 - 使用 Maven 構建引用03 Maven 本地倉庫

Maven 的本地資源是用來儲存所有專案的依賴關係(外掛 Jar 和其他檔案,這些檔案被 Maven 下載)到本地資料夾。很簡單,當你建立一個 Maven 專案,所有相關檔案將被儲存在你的 Maven 本地倉庫。 預設情況下,Maven 的本地資源庫預設為 .m2 目錄資料夾:

《隨筆十八》——C#中的 “ 《Effective C#》提煉總結提高Unity中C#程式碼質量的22條準則 ”

目錄 引言 本文內容思維導圖式總結 原則1:儘可能地使用屬性,而不是可直接訪問的資料成員 原則2:偏向於使用執行時常量而不是編譯時常量 原則3: 推薦使用is 或as操作符而不是強制型別轉換 原則4: 推薦使用條件屬性而不是#if條件編譯 原則5:理解幾個等同性判斷之