Android绘图基础3

来源:互联网 发布:北京知天地 刘杰 电话 编辑:程序博客网 时间:2024/05/22 20:57

使用Shader渲染器。
Shader渲染器主要对Paint画笔进行渲染。
Shader本身是一个抽象类,它提供了如下实现类。
BitmapShader:使用位图平铺的渲染效果。
LinearGradient:使用线性渐变来填充图形。
RadialGradient:使用圆形来渐变来填充图形。
SweepGradient:使用角度渐变来填充图形。
CompossShader:使用组合渲染来填充图形。

Matrix控制变换。重点内容
这个是Android提供的一个矩形工具类,它表示并不能对图像或者组件进行变换,
但是可以跟其他APi结合。
Matrix提供了如何方法来控制平移,旋转,和缩放。

  1. setTranslate(float dx ,float dy):控制Matrix进行平移。
  2. setRotate(float degrees):控制matrix进行旋转,degrees控制旋转的角度。
  3. setRotate(float degrees,float px,float py):设置以px,py为轴心进行旋转,degrees控制旋转角度。
  4. setSkew(float kx,float ky,float px,float py):控制Matrix以px,py为轴心进行倾斜。
    kx,ky 为 X,Y方向上的倾斜距离。
  5. setScale(float sx,float sy):设置Matrix进行缩放,sx,sy控制 x,y方法上缩放比例。
  6. setScalte(float sx,float sy,float px,float py):设置Matrix以px,py为轴心进行缩放,sx,sy控制X,Y 方向上的缩放比例。
package com.example.drawdemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.util.AttributeSet;import android.util.Log;import android.widget.TextView;public class MyView4 extends TextView {    private LinearGradient mLinearGradient;    private Matrix mGradientMatrix;    private Paint mPaint;    // 记录View的宽度    private int mViewWidth = 0;    // 记录平移    private int mTranslate = 0;    public MyView4(Context context) {        this(context, null);    }    public MyView4(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public MyView4(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        // TODO Auto-generated method stub        super.onSizeChanged(w, h, oldw, oldh);        Log.e("View", "----onSizeChanged");        if (mViewWidth == 0) {            mViewWidth = getMeasuredWidth();            if (mViewWidth > 0) {                mPaint = getPaint();                // 参数一为渐变起初点坐标x位置,参数二为y轴位置,参数三和四分辨对应渐变终点,最后参数为平铺方式,这里设置为镜像                mLinearGradient = new LinearGradient(//                        0, //                        0, //                        mViewWidth, //                        0, //                        new int[] { Color.RED, 0xffffffff, Color.BLUE }, //                        null, //                        Shader.TileMode.CLAMP);                mPaint.setShader(mLinearGradient);                mGradientMatrix = new Matrix();            }        }    }    // 通过矩阵的方式不断渐变效果,从而在绘制文字的时候,产生闪动效果。    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        super.onDraw(canvas);        Log.e("View", "----onDraw");        if (mGradientMatrix != null) {            mTranslate += mViewWidth / 6;            if (mTranslate > 2 * mViewWidth) {                mTranslate = -mViewWidth;            }            Log.e("tan","mTranslate"+mTranslate);            // 控制Matrix进行平移。            mGradientMatrix.setTranslate(mTranslate, 0);            // mLinearGradient线性渐变设置当地Matrix。            mLinearGradient.setLocalMatrix(mGradientMatrix);            // 使用postInvalidate()刷新界面 每100毫秒刷新一次            postInvalidateDelayed(150);        }    }}

这里写图片描述

Matrix 基础

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天津有公司执照怎么办落户 温州车在上海年审手续怎么办 广东小高考考了d怎么办 深圳开摩托抓到怎么办 深圳车卖了车牌怎么办 a1驾照时期过了怎么办 b1驾照扣了12分怎么办 北京的驾照换证怎么办 b2汽车驾驶证年审过期几天怎么办 上海驾照到期人在外地怎么办 交警开的罚单交不了怎么办 珠海交警微信交罚单扣分怎么办 驾驶证违法罚款单子没有了怎么办 转账密码输错3次怎么办 汽车违章扣6分怎么办 汽车扣了72分年检怎么办 汽车扣了50分怎么办 汽车扣了15分怎么办 汽车扣了27分怎么办 汽车扣了40分怎么办 行驶证掉了怎么办 异地 高速上没带驾驶证行驶证怎么办 身份证驾驶证行驶证都丢了怎么办 驾驶证年审过期一个月怎么办 柴油车辆年检尾气不合格怎么办 驾驶证过期了5天怎么办 过了审车时间怎么办 骑车没带行驶证怎么办 轿车行驶证丢了怎么办 车子没年检被扣怎么办 上海车辆年检过期了怎么办 行驶证过期十天怎么办 行驶证盖章满了怎么办 驾照c证扣12分怎么办 两年小车忘年审怎么办 4年车检过期了怎么办 车检过期了1周怎么办 超过检车几天了怎么办 驾驶证扣两个6分怎么办 行驶证检验有效期过期怎么办 驾驶证被扣26分怎么办