Drawable类型表达了各种各样的图形,包括图片、色块、画板、背景等。
包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般保存描述性的XML文件,而图片文件一般放在具体分辨率的drawable目录下。
各视图的background属性、ImageView和ImageButton的src属性、TextView和Button四个方向的drawable***系列属性都可以引用图形文件。


Shape图形又称形状图形,它用来描述常见的几何形状,包括矩形、圆角矩形、圆形、椭圆等等。
形状图形的定义文件是以shape标签为根节点的XML描述文件,它支持四种类型的形状:
(1)rectangle:矩形。默认值
(2)oval:椭圆。此时corners节点会失效
(3)line:直线。此时必须设置stroke节点,不然会报错
(4)ring:圆环


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









首页布局:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <Button
- android:id="@+id/btn_next"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:padding="5dp"
- android:text="点击跳转下一个activity页面"
- android:textColor="@color/black"
- android:textSize="17sp" />
-
- LinearLayout>

首页代码:
- package com.example.myapplication;
-
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import androidx.appcompat.app.AppCompatActivity;
-
- public class MainActivity extends AppCompatActivity implements View.OnClickListener
- {
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- findViewById(R.id.btn_next).setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v)
- {
- if (v.getId() == R.id.btn_next)
- {
- startActivity(new Intent(this, DrawableShapeActivity.class)); //创建一个目标确定的意图
-
- }
- }
- }

第二个布局:
- <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:background="@color/teal_200"
- 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="圆角矩形背景"
- android:textColor="@color/black"
- android:textSize="17sp" />
-
- <Button
- android:id="@+id/btn_oval"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="椭圆背景"
- android:textColor="@color/black"
- android:textSize="17sp" />
-
- LinearLayout>
-
- LinearLayout>

第二个代码:
- package com.example.myapplication;
-
- import android.os.Bundle;
- import android.view.View;
- import androidx.appcompat.app.AppCompatActivity;
-
- 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的视图
- v_content = findViewById(R.id.v_content);
-
- // v_content的背景设置为圆角矩形
- // v_content.setBackgroundResource(R.drawable.shape_rect_gold);
-
- // 给btn_rect设置点击监听器
- findViewById(R.id.btn_rect).setOnClickListener(this);
-
- // 给btn_oval设置点击监听器
- findViewById(R.id.btn_oval).setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v)
- {
- if (v.getId() == R.id.btn_rect) // 点击了“圆角矩形背景”按钮
- {
- v_content.setBackgroundResource(R.drawable.shape_rect_gold); // v_content的背景设置为圆角矩形
- }
- else if (v.getId() == R.id.btn_oval) // 点击了“椭圆背景”按钮
- {
-
- v_content.setBackgroundResource(R.drawable.shape_oval_rose); // v_content的背景设置为椭圆形状
- }
- }
-
- }


shape_oval_rose.xml
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="oval" >
-
-
- <solid android:color="#F3F2EC" />
-
-
- <stroke
- android:width="1dp"
- android:color="#F10606" />
-
- shape>

shape_rect_gold.xml
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
-
-
- <solid android:color="#ffdd66" />
-
-
- <stroke
- android:width="1dp"
- android:color="#E61111" />
-
-
- <corners android:radius="10dp" />
-
- shape>




=================================================================================================================



点九图片的扩展名是png,文件名后面常带有“.9”字样。因为该图片划分了3×3的九宫格区域,所以得名点九图片,也叫九宫格图片。
在拉伸点九图片时,只拉伸内部区域,不拉伸边缘线条。
在Android Studio中右击某张图片,并在右键菜单中选择“Create 9-Patch files”,接着单击OK按钮即可自动生成点九图片。






123
