1.Drawable类
Android将所有图形(图片,色块,画板,背景)都抽象为了Drawable类。
一般这些资源都是存储在res/drawable路径下
在xml文件中通过“@drawable/图片名”引用,图片名不带扩展名
在java文件中通过"R.drawable. 图片名“引用,图片名不带扩展名
2.Shape
用于绘制常见的几何图形:默认矩形,可选椭圆,直线,圆环
新建shape如下:并将root修改为shape
圆角矩形:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/purple_200"></solid>
<corners android:radius="20dp"></corners>
<stroke android:color="#aaaaaa" android:width="5dp"></stroke>
</shape>
椭圆:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/teal_200"></solid>
<stroke android:color="#aaaaaa" android:width="5dp"></stroke>
</shape>
测试代码:
package com.example.ch3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class ShapeActivity extends AppCompatActivity implements View.OnClickListener {
private View vi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shape);
vi = findViewById(R.id.view);
findViewById(R.id.bt1).setOnClickListener(this);
findViewById(R.id.bt2).setOnClickListener(this);
vi.setBackgroundResource(R.drawable.rect);
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.bt1:
vi.setBackgroundResource(R.drawable.rect);
break;
case R.id.bt2:
vi.setBackgroundResource(R.drawable.oval);
break;
}
}
}
效果图:
3.九宫格图片
为了解决图片设置成View背景时,由于大小不够,被拉伸填满背景导致的模糊问题。
如下图:
九宫格图片:可以控制拉伸的范围,达成只拉伸图片内部,不拉伸图片的外部(轮廓)的目的,这样图片不会变模糊。
先生成一个九宫格图片,然后控制padding范围:
4.状态列表图形
可以实现Button按下时和放开时的不同状态。
也可以用于其他控件,如下图:
步骤如下:
在drawable下新建一个selector,设置按下和不按时的图片
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/kuang" android:state_pressed="true"></item>
<item android:drawable="@drawable/no"></item>
</selector>