01_图形图像的介绍
在计算机中, 图像是采用位图形式来表示的; 图形是采用矢量图方式来表示的;
位图图像的缺陷
-
位图放大和缩小都会引起像素的增加和减小,这样会使得原由的图象的线条和形状变的参差不齐,与原图像相比出现失真;出现"锯齿形"。
矢量图形
矢量图形是通过计算机将一串线条和图形转换为一系列指令,在计算机中只存储这些指令,而不是像素.矢量图形看起来没有位图图像真实,但矢量图形的存储空间比位图图像要小得多,而且矢量图形通过拉伸、移动、放大等操作,图形不会产生实真。
02_图片的加载&大图和小图
03_图片的缩放操作
04_图片的旋转和位移
sysinternals screen magnifier
05_镜面效果
06_倒影效果
matrix.setscale(1f,-1f,srcbitmap.getWidth()/2, srcbitmap.getHeight()/2);
07_颜色的处理
Paint paint = new Paint();
// 设置画笔的颜色过滤
// vector:0-2 0:没有 2:最多
float[] cm = new float[] { 1 * redPercent, 0, 0, 0, 0, // red vector
0, 1 * greenPercent, 0, 0, 0, // green vector
0, 0, 1 * bluePercent, 0, 0, // blue vector
0, 0, 0, 1, 0 // alpha vector
};
paint.setColorFilter(new ColorMatrixColorFilter(new ColorMatrix(cm)));
08_canvas的Api相关
09_画画板的图片显示(接口控制)
点击:OnClickListener
SeekBar:OnSeekBarChangeListener
触摸:OnTouchListener
10_getX和getRawX的区别
getX 相对于控件
getRawX相对于屏幕
11_画画板颜色和粗细的设置
设置paint 的粗细即可,通过switch方法判断点击的是哪个颜色
12_图片的保存和广播扫描
直接存储
广播更新
13_撕衣服的布局的实现
相对布局中有两张imageview相互叠加
14_撕衣服的实现
设置一个copybitmap ,根据点击设置一些像素点为透明
privatevoid clearColor(int x,int y){
for (int i = -30; i < 30; i++) {
for (int j = -30; j < 30; j++) {
try {
if (x+i>bitmap.getWidth()|| x+i<0) {
continue;
}
if (y+j>bitmap.getHeight()||y+j<0){
continue;
}
if (i * i + j * j <= 900) {
copyBitmap.setPixel(x + i, y + j, Color.TRANSPARENT);// 单个像素点
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
ivPre.setImageBitmap(copyBitmap);
}
15_音乐播放器-同步(MediaPlayer)
注意解决用户体验
16_音乐播放器-异步
progressBar系列可以在子线程更新UI
17_声音池
SoundPool
pool = new SoundPool(maxStreams, streamType, srcQuality);
soundID = pool.load(this, R.raw.shoot, 1);
pool.play(soundID, leftVolume, rightVolume, priority, loop, rate);
18_视频播放器
VideoView
19_sufaceView的介绍
sv.getHolder().addCallback(new Callback() {
监听surfaceview的生命周期
20_surface的播放器
21.拍照avi
通过意图打开系统相机
22_录制
23_指南针和光传感
manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
获取传感器管理器