shape 简单总结

android shape总结 和控件样式定制,androidshape


1:shape总结 

1):shape文件是放置在drawable文件下的。res/drawable/filename.xml. 
2):shape类型:android:shape。一共有四种:rectangle,oval,line,ring。 
3):corners标签:定义圆角。当且仅当控件类型位rectangle时才有作用。android:radiuse位圆角的半径。当然也可以单独为每个圆角进行设置。 
4):gradient标签:颜色渐变。 
android:angle:颜色渐变的方向。0是从左到右;90度,是从下到上。angle必须保证是45的倍数。 
android:startColor,android:centerColor,android:endColor:分别为颜色的起始颜色,中间颜色和结束颜色。如果没有设置中间颜色,那么就从起始颜色渐变到结束颜色,否则回从起始颜色渐变到中间颜色,再从中间颜色渐变到结束颜色。 
android:centerX,android:centerY:我觉得这两个属性有存在的必要性的前提是要有android:centerColor。原因是当我没有设置android:centerColor属性时,任意的改变这两个属性的值都不会改变控件的显示效果。这两个属性是渐变的中间位置。大小都是再0.0--1.0。android:gradientRadius 渐变的半径大小。仅当渐变类型位radial的时候才有作用。 
android:type 渐变的类型。有三种情况:linear,radial,sweep。 
5):solid标签: 控件的颜色填充。 
6):stroke标签:shape的线条。 
android:width:线条的宽度。 android:color:线条的颜色。 
android:dashWidth:线条的长度。当设置了该值时,将会显示位虚线。除非你dashWidth设置的值很大,那么看起来还是一条完整的线条。 
android:dashGap:线条之间的距离。只在设置了dashWidth属性的情况下才会有效果。可以认为是虚线之间的宽度。 
7):padding标签:内边距。控件内容和控件四条边的距离。这里有点奇怪。等写完了控件样式定制再说吧。 

2:控件样式定制


有时候android系统自带的控件类型看起来不是很美观。有时我们需要自己定义想要的样式效果。此时就可以用到上面的shape drawable了。具体使用方法如下: 这里为一个按钮自定义样式。有一个默认按钮样式和一个按钮按下之后的样式。 
首先定义两个shape文件:button_normal.xml和button_pressed.xml。 
button_normal.xml: 
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners  android:radius="5dp"></corners>
    <solid android:color="#ff0000"/>
    <stroke 
        android:width="1dp"
        android:color="#00ff00"
        android:dashWidth="2dp"
        android:dashGap="2dp"/>

</shape>

button_pressed.xml 
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    >
    <corners
        android:radius="10dp"
        ></corners>
    
  <!--   <solid
        android:color="#ffffff"
        ></solid> -->
        
        <padding
            
            android:left="20dp"
            android:top="1dp"
            ></padding>
        
        <gradient 
            android:startColor="#ffffff"
            android:endColor="#000000"
            android:angle="0"
            android:centerX="0.1"
            android:centerY="0.2"
            />
    
    <stroke
		android:width="1dp"
		android:color="#00ff00" 
		android:dashWidth="1000dp"
		android:dashGap="3dp"       
        >
    </stroke>

</shape>

目前已经写好了两种样式文件了。那么怎么判断是按下了的状态呢? 这里引入stateDrawable文件了。它也是采用xml方式来定义的,在控件的不同状态可以用不同的样式来显示同一个控件。比如:按钮有很多种状态,按下状态,有焦点状态,和正常状态。 
范例:button_style.xml 
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:state_pressed="true" android:drawable="@drawable/button_pressed"></item>
    <item android:drawable="@drawable/button_normal"></item>
   
</selector>

这个文件会从上到下一直匹配下来,直到找到了一个item满足控件目前的状态。android:state_pressed 是按钮被按下状态。下面一个item是默认样式,可以匹配任何一种状态。所以要放在最下面,否则其他所有的定义都不起作用。 
最后一步:给按钮添加样式。 
 <Button
        android:text="@string/button_style" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_style"

这样就得到了按钮被按下和正常显示两种状态了。 
还记得之前有说过padding很奇怪吗?在button_normal.xml和button_pressed.xml两个文件中我只定义了一个padding,但是不管在按钮处于哪种状态下,padding属性都会应用到button上。刚学习android,希望大神多多指教。 

在窗体添加一个shape控件与定时控件,每隔1秒钟更改shape控件的相关属性,使其填充模式与外观随机发生改变

Private Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer() Randomize Shape1.Shape = Int(Rnd * 6) Shape1.FillStyle = Int(Rnd * 8)End Sub

用vb shape 控件怎画一个半径为90的圆

Shape1.Shape = 3
Shape1.Width = 90 * 2
Shape1.Height = 90 * 2 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值