Matrix xMatrix = new Matrix();
xMatrix.set(mBaseMatrix);
xMatrix.setRotate(-90);
setImageMatrix(xMatrix);
float v[] = new float[9];
xMatrix.getValues(v);
mBaseMatrix.setValues(v);
解决方案 »
- 请问一下android socket用TCP方式,client端如何监听服务器发送来的数据?
- 求帮助下android数据库查询语句的问题
- 如何解析android base文件?
- Android连接指定无线网络
- 大家好,请教一个Android客户端和Web服务端的问题。
- [Android]如何将多个APK或者其他文件打包成一个安装文件?
- myListActivity 和 myListAdapter 的控件传值问题。
- fragment问题,求教
- 小白求助!!emulator arm.exe已停止工作,到底是什么原因?
- 学生作业求助
- android 调用默认铃声后怎么改起始的默认选择位置?
- 为什么 android 开发手机拨号器的时候另外一台手机接收不到
private Bitmap mBitmap = null;//声明Bitmap对象
private int x = 300;
private int y = 100;
//private float angleA = 0.0f;//声明轴心A转动
private float angleB = 0.0f;//声明轴心B转动角度
private Matrix mMatrix = new Matrix();//构建矩阵Matrix对象
public BeadplateMiddle(Context context) {
super(context);
//装载资源
mBitmap =((BitmapDrawable) getResources().getDrawable(R.drawable.bedplate)).getBitmap();
//开启线程
new Thread(new DrawThread()).start();
}
//系统IOC开始绘制
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setAntiAlias(true);
canvas.drawCircle(x, y, 12, mPaint);
mMatrix = getMyMatrix(mMatrix,angleB, x, y);
canvas.drawBitmap(mBitmap, mMatrix, null);
}
/**
* 动态构建旋转矩阵Matrix对象
* @param matrix 需要计算的矩阵
* @param canvas 画布
* @param degrees 图片旋转的角度,正值为顺时针,负值为逆时针
* @param pivotX 轴心的X坐标
* @param pivotY 轴心的Y坐标
*/
private Matrix getMyMatrix(Matrix matrix ,float degrees,int pivotX , int pivotY ){
//重置Matrix
matrix.reset();
float cosValue = (float) Math.cos(Math.PI/(180/degrees));
float sinValue = (float) Math.sin(Math.PI/(180/degrees));
//设置旋转矩阵值
matrix.setValues(
new float[]{
cosValue, -sinValue, pivotX,
sinValue, cosValue, pivotY,
0, 0, 1});
return matrix;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){
x --;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){
x ++;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_UP){
y --;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){
y ++;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
angleB ++;
}
return true;
}
private class DrawThread implements Runnable{
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
try {
Thread.sleep(500);
} catch (Exception e) {
Thread.currentThread().interrupt();
}
//使用PostInvalidate可以直接在线程中更新视图
postInvalidate();
}
}
}
}
Matrix xMatrix = new Matrix();
while(true)
{
xMatrix.set(mBaseMatrix);
xMatrix.setRotate(-90);
setImageMatrix(xMatrix);
float v[] = new float[9];
xMatrix.getValues(v);
mBaseMatrix.setValues(v);
}让你的xMatrix成为范围更大的局部资源