渐变Drawable

作者:追风剑情 发布于:2016-7-26 16:53 分类:Android

       GradientDrawable允许设计复杂的渐变填充。每种渐变定义两种或三种颜色之间的线性、辐射或扫描方式的平滑过渡。渐变Drawable是使用<gradient>标记并作为形状Drawable定义中的子节点定义的。每个渐变Drawable都要求至少有一个startColor和endColor属性,并且支持一个可选的middleColor属性。通过使用type属性,可以把渐变定义为以下列出的某种类型:
线性:这是默认的渐变类型,它显示了按照angle属性定义的角度从startColor到endColor的直接颜色过渡。
辐射: 从形状的外边界到中心绘制从startColor到endColor的圆形渐变。它要求使用gradientRadius属性指定以像素计算的渐变过渡的半径。另外,它还支持使用centerX和centerY移动渐变中心的位置。
由于渐变的半径是使用像素定义的,因此不能为不同的像素密度动态缩放。因此,为了最小化条带,可能需要为不同的屏幕分辨率指定不同的渐变半径。

扫描: 绘制一个扫描渐变,它将沿着父形状(通常是一个圆环)的外边界从startColor到endColor进行过渡。

示例

shape_gradient_rectangle.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 线性渐变的矩形 -->
  3. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:shape="rectangle"
  5. android:useLevel="false">
  6. <gradient
  7. android:startColor="#ffffff"
  8. android:endColor="#ffffff"
  9. android:centerColor="#000000"
  10. android:useLevel="false"
  11. android:type="linear"
  12. android:angle="45"
  13. />
  14. </shape>

shape_gradient_oval.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 辐射渐变的椭圆 -->
  3. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:shape="oval"
  5. android:useLevel="false">
  6. <gradient
  7. android:startColor="#ffffff"
  8. android:endColor="#ffffff"
  9. android:centerColor="#000000"
  10. android:useLevel="false"
  11. android:type="radial"
  12. android:gradientRadius="300"
  13. />
  14. </shape>

shape_gradient_ring.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 扫描渐变的圆环 -->
  3. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:shape="ring"
  5. android:useLevel="false"
  6. android:innerRadiusRatio="3"
  7. android:thicknessRatio="8">
  8. <gradient
  9. android:startColor="#ffffff"
  10. android:endColor="#ffffff"
  11. android:centerColor="#000000"
  12. android:useLevel="false"
  13. android:type="sweep"
  14. />
  15. </shape>

fragment_shap_gradient.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:gravity="center_horizontal"
  6. android:orientation="vertical" >
  7.  
  8. <ImageView
  9. android:id="@+id/shap1"
  10. android:layout_width="200dp"
  11. android:layout_height="200dp"
  12. android:src="@drawable/shape_gradient_rectangle"
  13. android:contentDescription="@string/app_name" />
  14.  
  15. <ImageView
  16. android:id="@+id/shap2"
  17. android:layout_width="200dp"
  18. android:layout_height="200dp"
  19. android:src="@drawable/shape_gradient_oval"
  20. android:contentDescription="@string/app_name" />
  21. <ImageView
  22. android:id="@+id/shap3"
  23. android:layout_width="200dp"
  24. android:layout_height="200dp"
  25. android:src="@drawable/shape_gradient_ring"
  26. android:contentDescription="@string/app_name" />
  27. </LinearLayout>


活动代码

  1. package com.test.androidtest;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class ShapGradientActivity extends Activity {
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.fragment_shap_gradient);
  12. }
  13. }

运行测试

111111.png


标签: Android

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号