package com.ador.draw;
import java.io.InputStream;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CustomSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder holder;
private Paint paint;
private int[] imgs = new int[]{R.drawable.abc0,R.drawable.abc1,R.drawable.abc2,R.drawable.abc3};
boolean flag = false;
public CustomSurfaceView(Context context) {
super(context);
holder = this.getHolder();//获取holder
holder.addCallback(this);
paint = new Paint();
}
public CustomSurfaceView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
holder = this.getHolder();//获取holder
holder.addCallback(this);
paint = new Paint();
}
public CustomSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
holder = this.getHolder();//获取holder
holder.addCallback(this);
paint = new Paint();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
new Thread(new MyThread()).start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
//内部类的内部类
class MyThread implements Runnable{
@Override
public void run() {
Bitmap bmp;
Bitmap bmp1;
int i = 0;
while(true){
while(flag){
Canvas canvas = holder.lockCanvas(null);//获取画布
int imgId = imgs[i];
bmp = setAlpha(readBitmap(getResources(), imgId), 50);
Matrix matrix=new Matrix();
canvas.drawBitmap(bmp, matrix, paint);
holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像
Canvas canvas1 = holder.lockCanvas(null);//获取画布
int imgId1 = imgs[i];
bmp1 = setAlpha(readBitmap(getResources(), imgId1), 50);
Matrix matrix1=new Matrix();
canvas.drawBitmap(bmp1, matrix1, paint);
holder.unlockCanvasAndPost(canvas1);//解锁画布,提交画好的图像
i += 1;
if(i == imgs.length){
i = 0;
}
try {
new Thread().sleep(2000);
if(bmp!=null)
bmp.recycle();
if(bmp1!=null)
bmp1.recycle();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
new Thread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static Bitmap readBitmap(Resources r, int resId) {
// BitmapFactory.Options opt = new BitmapFactory.Options();
// opt.inPreferredConfig = Bitmap.Config.RGB_565;
// opt.inPurgeable = true;
// opt.inInputShareable = true;
InputStream is = r.openRawResource(resId);
return BitmapFactory.decodeStream(is);
}
public static Bitmap setAlpha(Bitmap sourceImg, int number) {
int[] argb = new int[sourceImg.getWidth() * sourceImg.getHeight()];
sourceImg.getPixels(argb, 0, sourceImg.getWidth(), 0, 0,sourceImg.getWidth(), sourceImg.getHeight());// 获得图片的ARGB值
number = number * 255 / 100;
for (int i = 0; i < argb.length; i++) {
argb[i] = (number << 24) | (argb[i] & 0x00FFFFFF);// 修改最高2位的值
}
sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidth(), sourceImg.getHeight(), Config.ARGB_8888);
return sourceImg;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
DrawImage SurfaceView 多层绘制透明图
共37个文件
png:14个
class:10个
xml:3个
4星 · 超过85%的资源 需积分: 23 72 下载量 43 浏览量
2012-06-27
18:03:03
上传
评论
收藏 3.71MB ZIP 举报
温馨提示
SurfaceView 多层绘制透明图 一层有一层 上层能看见以前绘制的
资源推荐
资源详情
资源评论
收起资源包目录
DrawImage.zip (37个子文件)
DrawImage
bin
classes.dex 7KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable
abc2.png 47KB
abc3.png 154KB
abc0.png 215KB
abc1.PNG 470KB
drawable-mdpi
ic_launcher.png 2KB
classes
com
ador
draw
R$layout.class 379B
R$id.class 398B
R$drawable.class 504B
CustomSurfaceView.class 4KB
DrawImageActivity.class 1KB
R$attr.class 325B
R.class 496B
DrawImageActivity$1.class 995B
CustomSurfaceView$MyThread.class 2KB
R$string.class 412B
resources.ap_ 898KB
DrawImage.apk 903KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable
abc2.png 43KB
abc3.png 156KB
abc0.png 220KB
abc1.PNG 665KB
values
strings.xml 184B
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 615B
assets
gen
com
ador
draw
R.java 988B
proguard.cfg 1KB
src
com
ador
draw
DrawImageActivity.java 786B
CustomSurfaceView.java 4KB
.project 845B
.classpath 364B
project.properties 360B
AndroidManifest.xml 735B
共 37 条
- 1
sziicool
- 粉丝: 74
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页