Android开发 Drawable

文章介绍了Android中的Drawable类,它是所有图形资源的抽象,包括图片、形状等。Shape用于绘制几何图形,如圆角矩形和椭圆。九宫格图片解决了图片拉伸模糊问题,而状态列表图形则实现了控件不同状态下的图形变换,如Button的按下和释放效果。
摘要由CSDN通过智能技术生成

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值