Android绘图基础3
来源:互联网 发布:北京知天地 刘杰 电话 编辑:程序博客网 时间:2024/05/22 20:57
使用Shader渲染器。
Shader渲染器主要对Paint画笔进行渲染。
Shader本身是一个抽象类,它提供了如下实现类。
BitmapShader:使用位图平铺的渲染效果。
LinearGradient:使用线性渐变来填充图形。
RadialGradient:使用圆形来渐变来填充图形。
SweepGradient:使用角度渐变来填充图形。
CompossShader:使用组合渲染来填充图形。
Matrix控制变换。重点内容
这个是Android提供的一个矩形工具类,它表示并不能对图像或者组件进行变换,
但是可以跟其他APi结合。
Matrix提供了如何方法来控制平移,旋转,和缩放。
- setTranslate(float dx ,float dy):控制Matrix进行平移。
- setRotate(float degrees):控制matrix进行旋转,degrees控制旋转的角度。
- setRotate(float degrees,float px,float py):设置以px,py为轴心进行旋转,degrees控制旋转角度。
- setSkew(float kx,float ky,float px,float py):控制Matrix以px,py为轴心进行倾斜。
kx,ky 为 X,Y方向上的倾斜距离。 - setScale(float sx,float sy):设置Matrix进行缩放,sx,sy控制 x,y方法上缩放比例。
- 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
- Android绘图基础3
- Android UI 绘图基础
- Android绘图基础
- Android 绘图基础Canvas
- android基础绘图学习
- Android绘图基础
- Android绘图基础
- android绘图基础
- Android 绘图基础
- android基础--canvas绘图
- android基础--canvas绘图
- Android绘图之2D绘图基础
- Android绘图基础--简易写字板
- Android 2D绘图基础
- Android —— 绘图基础
- Android自定义View绘图基础
- Android绘图基础Path、PathMeasure
- Android绘图基础之Shader
- zz Specified VM install not found: type Standard VM
- 刚开始添加Open CV的时候遇到问题
- 权值共享和卷积核(滤波器)
- 如何让file input能够实现置空和【异步】上传后相同文件的再次选择触发change
- 代理
- Android绘图基础3
- JAVA自学之每日一题(十)
- Hibernate主键生成方式 Key Generator
- There is no getter for property "name" in java.lang.String
- Servlet 3.0 新特性详解
- Android Binder 设计与实现
- org.hibernate.HibernateException: /hibernate.cfg.xml not found
- animate.css动画库使用方法介绍
- Spark学习笔记#1-快速入门