package lesson10_fragmentfordata.myapplication;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
/**
* 图像特效的演示
*/
public class MyView extends View {
//定义Bitmap对象
Bitmap bitmap;
//创建矩阵对象
Matrix matrix = new Matrix();
//宽和高
int width, height;
//缩放比例
float scale = 1f;
//图像的状态是缩放还是旋转
Boolean isScale = false;
//判断是否旋转
Boolean istRotate = false;
//x轴方向倾斜的角度
private float sx;
//旋转的角度
private float degress;
//重写俩个构造方法
public MyView(Context context) {
super(context);
initView();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
/**
* 初始化数据
*/
private void initView() {
//获取位图 bitmap=getContext().getResources().getDrawable(R.mipmap.img01);
bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.a3);
//获取宽和高
width = bitmap.getWidth();
height = bitmap.getHeight();
//使当前的视图获取焦点
this.setFocusable(true);
}
/**
* 重写onDraw重绘的方法
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
matrix.reset();//重置
if (isScale) {
//伸缩状态
matrix.setScale(scale, scale);
} else {
//倾斜状态
matrix.setSkew(sx, 0);
}
if (istRotate) {
//顺时针旋转30度
matrix.setRotate(degress,0.5f*width,0.5f*height);
}
//根据原始位图和Matrix创建新图片
Bitmap bit = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
//从新绘制位图
canvas.drawBitmap(bit, matrix, null);
}
/**
* 键盘控制的逻辑
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_A://点击A向左倾斜
isScale = false;
istRotate=false;
sx -= 0.1;
invalidate();//重绘
break;
case KeyEvent.KEYCODE_D://点击D向右倾斜
isScale = false;
istRotate=false;
sx += 0.1;
invalidate();//重绘
break;
case KeyEvent.KEYCODE_W://点击W图像变大
isScale = true;
istRotate=false;
scale += 0.1;
invalidate();//重绘
break;
case KeyEvent.KEYCODE_S://点击S图像变小
isScale = true;
istRotate=false;
scale -= 0.1;
invalidate();//重绘
break;
case KeyEvent.KEYCODE_X://点击x图像顺时针旋转30度
istRotate = true;
degress += 30;
invalidate();//重绘
break;
}
return super.onKeyDown(keyCode, event);
}
}
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有