網站首頁 編程語言 正文
一、圖形Drawable
Drawable類型表達了各種各樣的圖形,包括圖片、色塊、畫板、背景等。
包含圖片在內的圖形文件放在res目錄的各個drawable目錄下,其中drawable目錄一般保存描述性的XML文件,而圖片文件一般放在具體分辨率的drawable目錄下。
各視圖的background屬性、ImageView和ImageButton的src屬性、TextView和Button四個方向的drawable***系列屬性都可以引用圖形文件。
二、形狀圖形
Shape圖形又稱形狀圖形,它用來描述常見的幾何形狀,包括矩形、圓角矩形、圓形、橢圓等。
形狀圖形的定義文件是以Shape標簽為根節點的XML描述文件。
實際開發一般主要使用3個節點:stroke、corners、solid。
1、類型的形狀:
- rectangle:矩形,默認
- oval:橢圓,此時corners節點失效
- line:直線,此時必須設置stroke節點,不然報錯
- ring:圓環
2、size(尺寸)
size是shape的下級節點,它描述了形狀圖形的寬高尺寸,若無size節點,則表示寬高與宿主視圖一樣大小,下面是size節點的常用屬性說明:
- height:像素類型,圖形高度。
- width:像素類型,圖形寬度。
3、stroke(描邊)
stroke是shape的下級節點,它描述了形狀圖形的描邊規格,若無stroke節點,則表示不存在描邊,下面是stroke節點的常用屬性說明:
- color:顏色類型,描邊的顏色。
- dashGap:像素類型,每段虛線之間的間隔。
- dashWidth:像素類型,每段虛線的寬度,若dashGap和dashWidth有一個值為0,則描邊為實線。
- wdith:像素類型,描邊的厚度。
4、corners(圓角)
corners是shape的下級節點,它描述了形狀圖形的圓角大小,若無corners節點,則表示無圓角,下面是常用屬性:
- bottomLeftRadius:坐下圓角的半徑。
- bottomRightRadius:右下圓角的半徑。
- topLeftRadius:左上圓角的半徑。
- topRightRadius:右上圓角的半徑。
- radius:四個圓角的半徑。
5、solid(填充)
solid是shape的下級節點,它描述了形狀圖形的填充色彩,若無solid節點,則表示無填充顏色,下面的屬性說明:
- color:內部填充的顏色。
6、padding(間隔)
padding是shape的下級節點,它描述了形狀圖形與周圍邊界的間隔,若無padding節點,則表示四周不設間隔,下面的常用屬性:
- top:與上方的間隔。
- bottom:與下方的間隔。
- left:與左邊的間隔。
- right:與右邊的間隔。
7、gradient(漸變)
gradient是shape的下級節點,它描述了形狀圖形的顏色漸變,若無gradient節點,則表示沒有漸變效果,下面的常用屬性:
- angle:整型,漸變的起始角度,為0表示9點鐘位置,增值大表示往逆時針方向旋轉。
- type:漸變類型。
漸變類型 | 說明 |
linear | 線性漸變,默認 |
radial | 放射漸變,起始顏色就是圓心顏色 |
sweep | 滾動漸變,即一個線段以某個端點為圓心做360°旋轉 |
- centerX:浮點型,圓心的X坐標,type=linear時不可用。
- centerY:浮點型,圓心的Y坐標,type=linear時不可用。
- gradientRadius:整型,漸變半徑,type=radial時需要設置。
- centerColor:漸變的中間顏色。
- startColor:漸變的起始顏色。
- endColor:漸變的終止顏色。
- useLevel:布爾類型,設置為true為無漸變色。
例:點擊按鈕切換圖形
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:id="@+id/v_content" android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="10dp"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_rect" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="圓角矩形"/> <Button android:id="@+id/btn_oval" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="橢圓矩形"/> </LinearLayout> </LinearLayout>
drawable下新建rect.xml文件
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--指定形狀內部的填充顏色--> <solid android:color="#ffdd66"/> <!-- 指定形狀輪廓的粗細與顏色--> <stroke android:width="1dp" android:color="#aaaaaa"/> <!-- 指定形狀四個圓角的半徑--> <corners android:radius="10dp"/> </shape>
oval.xml文件
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!--指定形狀內部的填充顏色--> <solid android:color="#ff66aa"/> <!-- 指定形狀輪廓的粗細與顏色--> <stroke android:width="1dp" android:color="#aaaaaa"/> </shape>
java代碼
public class DrawableShapeActivity extends AppCompatActivity implements View.OnClickListener {
private View v_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawable_shape);
v_content = findViewById(R.id.v_content);
findViewById(R.id.btn_rect).setOnClickListener(this);
findViewById(R.id.btn_oval).setOnClickListener(this);
//v_content的背景設置為圓角矩形
v_content.setBackgroundResource(R.drawable.shape_rect_gold);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_rect:
v_content.setBackgroundResource(R.drawable.shape_rect_gold);
break;
case R.id.btn_oval:
v_content.setBackgroundResource(R.drawable.shape_oval_rose);
break;
}
}
}
運行結果:
三、九宮格圖片
將某張圖片設置成視圖背景時,如果圖片尺寸太小,則會自動拉伸使之填滿背景,但圖片拉的過大,會變得模糊。
使用九宮格圖片:將圖片后綴改為.9.png
四、狀態列表圖形
Button按鈕的背景在正常情況下是凸起的,在按下時是凹陷的,從按下到彈起的過程,用戶便能知道點擊了這個按鈕。
例:
當按鈕被按下時使用的是第一個item的圖片
<item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/button_normal"/>
狀態類型的取值說明
狀態列表圖形不僅用于按鈕控件,還可用于其他擁有多種狀態的控件。
原文鏈接:https://blog.csdn.net/Tir_zhang/article/details/126967112
相關推薦
- 2022-11-05 Android開發使用Databinding實現關注功能mvvp_Android
- 2022-02-19 Android~日志工具Log
- 2022-04-26 jQuery實現鎖定頁面元素(表格列)_jquery
- 2022-04-18 python函數的默認參數請勿定義可變類型詳解_python
- 2024-01-29 使用 Maven 進行項目構建:深入了解 `mvn clean install -U` 命令
- 2022-09-20 C語言數據結構之單鏈表操作詳解_C 語言
- 2022-02-27 解決No converter for XXX with preset Content-Type ‘a
- 2022-09-08 深入了解Go語言的基本語法與常用函數_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支