当前位置:  编程技术>移动开发
本页文章导读:
    ▪设立navigation bar 的标题        设置navigation bar 的标题 - (void)viewDidLoad {    [super viewDidLoad];    self.title = @"Hello World";} ......
    ▪ Only the original thread that created a view hierarchy can touch its views<已解决&gt        Only the original thread that created a view hierarchy can touch its views<已解决> 子线程不可以 更新UI主线程 new Thread() { public void run() { mHandler.sendmessage(new Message()); } final Handler mHandler = ne.........
    ▪ Matrix 根本使用方法(一)       Matrix 基本使用方法(一)   java.lang.Object    ↳   android.graphics.Matrix     Public Constructors Matrix() Create an identity matrix Matrix(Matrix src) Create a matrix that is a (deep) copy of src        .........

[1]设立navigation bar 的标题
    来源: 互联网  发布时间: 2014-02-18
设置navigation bar 的标题
- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"Hello World";
}

    
[2] Only the original thread that created a view hierarchy can touch its views<已解决&gt
    来源: 互联网  发布时间: 2014-02-18
Only the original thread that created a view hierarchy can touch its views<已解决>

子线程不可以 更新UI主线程

 new Thread() {
	    public void run() {
	        mHandler.sendmessage(new Message());
	    }
 final Handler mHandler = new Handler() {  
	               public void handleMessage(Message msg) {  
	                   super.handleMessage(msg);
	                  //更新具体的线程
                            }  
	           };  

    
[3] Matrix 根本使用方法(一)
    来源: 互联网  发布时间: 2014-02-18
Matrix 基本使用方法(一)

 

java.lang.Object    ↳

 

android.graphics.Matrix

 

 

Public Constructors Matrix()

Create an identity matrix
Matrix(Matrix src)
Create a matrix that is a (deep) copy of src

 

 

 

 

 

 


 

旋转

 

void setRotate(float degrees)

Set the matrix to rotate about (0,0) by the specified number of degrees.
void setRotate(float degrees, float px, float py)
Set the matrix to rotate by the specified number of degrees, with a pivot point at (px, py).

围绕点px, py 旋转 degrees度, 如果没设置坐标,默认以0,0点旋转.

例子: setRotate(45, 180, 120);


 

 

 

缩放,翻转

 

void setScale(float sx, float sy)

Set the matrix to scale by sx and sy.
void setScale(float sx, float sy, float px, float py)
Set the matrix to scale by sx and sy, with a pivot point at (px, py).

以点px,py为原点缩放 >=0   1为正常大小  

如果是负数,图形就会翻转

如果没设置原点坐标,默认以0,0点缩放(如果发现图片不见了,检查一下是不是翻转出了屏幕)

例子:setScale(-0.5f, 1,180, 120);  //左右翻转并缩放到一半大小


 

 

倾斜

 

void setSkew(float kx, float ky, float px, float py)

Set the matrix to skew by sx and sy, with a pivot point at (px, py).
void setSkew(float kx, float ky)
Set the matrix to skew by sx and sy.

以点px,py为原点倾斜如果没有设置原点,则以0,0点为原点.

例子:setSkew(0, 1, 180, 120); //Y 方向拉伸


 

坐标

void setTranslate(float dx, float dy)

Set the matrix to translate by (dx, dy).

是图片移动到某一个位置

 

 

 

注意

Matrix中带有pre, post的函数需要考虑先后顺序

例如:想要旋转45度,然后平移到100,100的位置需要

 

 

Matrix matrix = new Matrix();
matrix.postRotate(45);
matrix.postTranslate(100, 100);  

 

或者

 

Matrix matrix = new Matrix();
matrix.setTranslate(100, 100);
matrix.preRotate(45);

 

 

这就要考虑到矩阵的前乘和后乘了,不然的话你会发现可能坐标位置不是你想要的,可能图像都不见了.

如果在复杂一些,需要选择,缩放,倾斜同时起作用,并且还要设置坐标到屏幕指定位置你会发现很麻烦,需要自己计算出各个方法的参数,然后考虑调用的先后顺序.

 

但这里有一种更简便的方法,叫系统帮我们计算

 

boolean setConcat(Matrix a, Matrix b)

Set the matrix to the concatenation of the two specified matrices, returning true if the the result can be represented.

这个方法的意思是帮我们把两个 Matrix对象计算并连接起来.

这样的话我们就可以这样使用了

 

 

	Matrix mRotateMatrix = new Matrix();	//控制旋转
	Matrix mScaleMatrix = new Matrix();	//控制缩放
	Matrix mSkewMatrix = new Matrix();	//控制倾斜
	Matrix mPosMatrix = new Matrix();		//控制坐标
	Matrix mMatrix = new Matrix();		//合并
		
	mMatrix.setConcat(mRotateMatrix, mScaleMatrix);
	mMatrix.setConcat(mMatrix, mSkewMatrix);
	mMatrix.setConcat(mMatrix, mPosMatrix);
		
	canvas.drawBitmap(mBitmap, mMatrix, mPaint);
 

注意:合并的第一步不能直接用mMatrix自身去连接其他的Matrix,我试过几次结果图像又飞了,大家再试试

 

例子:

同时设置

setRotate(45, 180, 120);

setScale(-0.5f, 1,180, 120);  //左右翻转并缩放到一半大小

setSkew(0, 1, 180, 120);      //Y 方向拉伸


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3