Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1166|回复: 0

【Android UI】 Shape详解 (GradientDrawable)-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:37:12 | 显示全部楼层 |阅读模式
Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片。 这样就容易使apk变大。
   那么除了使用drawable这样的图片外,还有其他方法吗?
   本次就谈一下自定义图形shape,Android上支持以下几种属性shape、gradient、stroke、corners、padding、solid等。
先来看两个例子:
<shape

        xmlns:android="http://schemas.android.com/apk/res/android"

        android:shape="rectangle">

        <gradient android:startColor="#FFFF0000"

                android:endColor="#80FF00FF"

                android:angle="270" />

        <padding android:left="50dp"

                android:top="20dp" android:right="7dp"

                android:bottom="7dp" />

        <corners android:radius="8dp" />

</shape>
复制代码效果:  
<?xml version="1.0" encoding="UTF-8"?>

<shape android:shape="rectangle"

        xmlns:android="http://schemas.android.com/apk/res/android">

        <solid android:color="#b4000000" />

        <stroke android:width="2.0dip"

                android:color="#b4ffffff"

                android:dashWidth="3.0dip"

                android:dashGap="0.0dip" />

        <padding android:left="7.0dip"

                android:top="7.0dip" android:right="7.0dip"

                android:bottom="7.0dip" />

        <corners android:radius="8.0dip" />

</shape>
复制代码
效果:  
总结一下Shape的所有子属性,如图:  
简单说明一下:gradient   -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。solid      --  填充。stroke   --  描边。corners  --  圆角。padding   -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

上面这些不是本讲重点。 本讲的重点是这些xml中属性,与java类的对应关系, 以及如何使用Java类写出上面一样的效果!首先来看对应关系:父节点 shape   --   ShapeDrawable [子节点] gradient   --   [子节点] padding   --    [子节点] corners   --   setCornerRadius 、setCornerRadii  [子节点] solid       --     [子节点]  stroke   --   setStroke  [子节点]  size --   setSize发现只有几个是可以对应的~~ 看来通过Java代码来实现上述是行不通的..暂时研究到这, 如果有实现的朋友,希望可以留言指点,非常感谢。

附件对android.graphics.drawable.Drawable包下的类进行了一下总结。 包括类与XML属性的对应关系。 感觉很不错! 需要的各位可以学习一下。
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:37:16 | 显示全部楼层

Re:【Android

怎么没有看见附件
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:37:19 | 显示全部楼层

Re:【Android

学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 23:46 , Processed in 0.303619 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表