在Android的Paint API中,Shader 是一种用于在绘制图形时定义填充样式的对象。通过使用Shader,你可以实现各种图像渲染效果,如渐变、图像纹理等。以下是有关Shader的基础入门信息:

1. 基本概念:
   - Shader 是一个用于定义图形填充样式的基类。
   - 它的子类包括:
      - LinearGradient:线性渐变。
      - RadialGradient:径向渐变。
      - SweepGradient:扫描渐变。
      - BitmapShader:位图图像纹理。
      - 等等。

2. LinearGradient(线性渐变):
   - LinearGradient 可以创建沿着一条直线的渐变效果。你需要指定渐变的起始点和结束点,以及颜色数组。
    // 创建LinearGradient
    int startColor = Color.RED;
    int endColor = Color.BLUE;
    Shader linearGradient = new LinearGradient(
            startX, startY, // 渐变起始点坐标
            endX, endY,     // 渐变结束点坐标
            startColor, endColor, // 起始颜色和结束颜色
            Shader.TileMode.CLAMP // 渐变重复模式,这里使用 CLAMP 表示边缘颜色延伸
    );

    // 应用Shader到Paint
    Paint paint = new Paint();
    paint.setShader(linearGradient);

3. RadialGradient(径向渐变):
   - RadialGradient 可以创建一个以中心为起点的径向渐变效果。
    // 创建RadialGradient
    float centerX = 100f;
    float centerY = 100f;
    float radius = 50f;
    int startColor = Color.RED;
    int endColor = Color.BLUE;
    Shader radialGradient = new RadialGradient(
            centerX, centerY, // 渐变中心坐标
            radius,           // 渐变半径
            startColor, endColor, // 起始颜色和结束颜色
            Shader.TileMode.CLAMP // 渐变重复模式
    );

    // 应用Shader到Paint
    Paint paint = new Paint();
    paint.setShader(radialGradient);

4. BitmapShader(图像纹理):
   - BitmapShader 可以使用位图作为填充样式,创建图像纹理效果。
    // 创建BitmapShader
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.texture_image);
    Shader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

    // 应用Shader到Paint
    Paint paint = new Paint();
    paint.setShader(bitmapShader);

5. SweepGradient(扫描渐变):
   - SweepGradient 可以创建一个围绕中心旋转的颜色渐变。
    // 创建SweepGradient
    float centerX = 100f;
    float centerY = 100f;
    int startColor = Color.RED;
    int endColor = Color.BLUE;
    Shader sweepGradient = new SweepGradient(
            centerX, centerY, // 渐变中心坐标
            startColor, endColor // 起始颜色和结束颜色
    );

    // 应用Shader到Paint
    Paint paint = new Paint();
    paint.setShader(sweepGradient);

这里介绍了关于Shader的基本概念和一些常见类型的使用方法。通过使用不同的Shader类型,你可以实现丰富的图像渲染效果。


转载请注明出处:http://www.pingtaimeng.com/article/detail/15226/Android