Shape详解与背景渐变色

本文探讨了在Android开发中如何通过自定义图形shape来改变控件样式,包括背景色、渐变色、填充、描边、圆角等属性的应用。详细介绍了shape、gradient、solid、stroke、corners等属性的用法,并提供了实现过程和示例代码。此外,还对比了使用drawable图片与自定义shape的优缺点,以及如何减少APK大小的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置背景色可以通过在res/drawable里定义一个xml,如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 <gradient 
  android:startColor="#FFF"
  android:endColor="#000"
  android:angle="45"
 />
</shape>

shape是用来定义形状的,gradient定义该形状里面为渐变色填充,startColor起始颜色,endColor结束颜色,angle表示方向角度。当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。

 

实现过程:

第一步:

res/drawable/background_login.xml

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 <gradient 
  android:startColor="#FFF"
  android:endColor="#000"
  android:angle="45"
 />
</shape>

第二步:

res/layout/login.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/background_login">
  
</LinearLayout>

第三步:

import android.app.Activity;
import android.os.Bundle;

public class LoginActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
    }
}

 

效果图:

 

 


在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片。 这样就容易使apk变大。

 
那么除了使用drawable这样的图片外,还有其他方法吗?
 

本次就谈一下自定义图形shape,Android上支持以下几种属性shape、gradient、stroke、corners、padding、solid等。

简单说明一下:
 
gradient   -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。
solid      --  填充。
stroke   --  描边。
corners  --  圆角。
padding   -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值