开发者社区> 小弟的谷哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android图形绘制基础(一)

简介: mainActiviry如下: package com.cn; import android.app.Activity; import android.
+关注继续查看

mainActiviry如下:

package com.cn;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
     private DrawBitmapView mDrawBitmapView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mDrawBitmapView=new DrawBitmapView(MainActivity.this, null);
        setContentView(mDrawBitmapView);
    }
  
}


DrawBitmapView如下:

package com.cn;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
//问题0:
//Matrix m1=new Matrix();
//注意这个类的包的引入,android.graphics.Matrix
//问题1:
//post和set以及pre的使用
//这三种都可以改变Matrix但是用法不太一样
//1.1若连续多次使用set那么只有最后一个set起到作用
//1.2常用的是第一次时用set,在随后都采用post的方式
//   表示追加.
//1.3pre表示最先发生.即会在post和set前发生
//问题2:
//Rotate默认是以(0,0)为参照点
//所以常要设置参考旋转点
//m1.postRotate(30,70,100);
//问题3:
//设置Alpha的时候
//mPaint.setAlpha(30);
//取值范围为[0..255]
//备注:
//最好将以下测试方法,分开进行

public class DrawBitmapView extends View {
	Bitmap mBitmap;
	Paint mPaint;
	public DrawBitmapView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView();
	}
	public void initView(){
		mPaint=new Paint();
		mBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
	}
    @Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
//		 // ----->测试1:
//		 //先绘制一个图形
//		 //然后绘制经过位移,旋转,缩放后的图形(方法1)
//		 //第一次绘制
//		 mPaint.setAntiAlias(true);
//		 canvas.drawBitmap(mBitmap, 50, 50, mPaint);
//		 canvas.save();
//		 //第二次绘制
//		 Matrix m1 = new Matrix();
//		 m1.setTranslate(70, 100);
//		 m1.postScale(1.5f, 1.5f);
//		 m1.postRotate(30, 70, 100);
//		 canvas.drawBitmap(mBitmap, m1, mPaint);

//		// ----->测试2:
//		// 先绘制一个图形
//		// 然后绘制经过位移,旋转,缩放后的图形(方法2)
//		// 第一次绘制
//		mPaint.setAntiAlias(true);
//		canvas.drawBitmap(mBitmap, 50, 50, mPaint);
//		canvas.save();
//		// 第二次绘制
//		Matrix m2 = new Matrix();
//		m2.setTranslate(70, 100);
//		m2.postScale(1.5f, 1.5f);
//		Matrix m3=new Matrix();
//		mPaint.setAlpha(50);
//		m3.setRotate(30, 70, 100);
//		//利用setConcat衔接两个变换
//		Matrix m4=new Matrix();
//		m4.setConcat(m2, m3);
//		canvas.drawBitmap(mBitmap, m4, mPaint);
//      canvas.restore();
//		canvas.save();
		
		// ----->测试3:preXXX()方法和xxxSkew()方法
		//该类方法会在当前矩阵的最前面发生
		//比如在该例子中,会先旋转后位移
		// 第一次绘制
		mPaint.setAntiAlias(true);
		canvas.drawBitmap(mBitmap, 50, 50, mPaint);
		canvas.save();
		// 第二次绘制
		Matrix m5=new Matrix();
		m5.setTranslate(100, 200);
		m5.preRotate(30, 50, 50);
		//skew表示倾斜
		m5.postSkew(0.2f, 0.2f, 50, 50);
		canvas.drawBitmap(mBitmap, m5, mPaint);
		
	}
    @Override
    public boolean onTouchEvent(MotionEvent event) {
    	return super.onTouchEvent(event);
    }
}


 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android绘制(二):来用Path绘出想要的图形吧!
Android绘制(一):来用shape绘出想要的图形吧! 目录 前言 绘制线 绘制图形 绘制弧 绘制文字 组合 贝塞尔曲线 最后 前言 之前有一篇用shape进行绘制的, 但是那个偏向静态, path结合属性动画可以动起来哦~ path是什么...
1154 0
Android绘制(一):来用shape绘出想要的图形吧!
目录 前言 shape绘制 矩形 椭圆 线 环 用shape绘制SeekBar 最后 前言 在没有UI设计师的时候, 或者是想简单看下效果的时候, 用shape进行快速绘制是极好的! 官方文档.
784 0
Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义
原文地址:http://android.xsoftlab.net/training/graphics/opengl/shapes.html 使用OpenGL绘制图形的第一步就是要定义一个图形。
575 0
Android图形绘制基础(二)
mainActivity如下: package com.cn; import android.os.Bundle; import android.
485 0
关于Android图形系统的一些事实真相
现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽,下面给大家一些关于Android硬件渲染的事实真相,硬件加速并非大家想的那么完美,而我们也一直在改进! 1. Android 一直在使用硬件加速。
582 0
Android Studio进行APP设计开发之矢量图及XML文件转换
Android Studio进行APP设计开发之矢量图及XML文件转换
0 0
Android studio开发APP时设置更改启动时的主界面程序
Android studio开发APP时设置更改启动时的主界面程序
0 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
0 0
+关注
小弟的谷哥
welcome
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载