求教啊 自己做的pano2vr全景图教程 怎么去适应各种手机的分辨率

本帖子已过去太久远了,不再提供回复功能。7970人阅读
Android开发(1049)
Android UI(430)
以下代码可实现Android图片按照不同屏幕手机的大小 比例缩放。
1、定义 bitmap
public Bitmap viewBg;// 背景图
2、给他图片资源
viewBg = BitmapFactory.decodeResource(res, R.drawable.shuaibao_bg);
3、就是正事了,自己看吧
canvas.save();
Matrix matrix=new Matrix();
int width = viewBg.getWidth();//获取资源位图的宽
int height = viewBg.getHeight();//获取资源位图的高
float w = scalX/viewBg.getWidth();
float h = scalY/viewBg.getHeight();
matrix.postScale(w, h);//获取缩放比例
Bitmap dstbmp = Bitmap.createBitmap(viewBg,0,0,
width,height,matrix,true);//根据缩放比例获取新的位图
canvas.drawBitmap(dstbmp,0,0, mPaint); //在屏幕上画出位图
canvas.restore();
下面是最全面的代码:
import android.content.C
import android.content.I
import android.content.res.R
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.M
import android.graphics.P
import android.view.SurfaceH
import android.view.SurfaceV
.ldci.madc.firecrackers.R;
.ldci.madc.firecrackers.ui.shuaibao.ShuaiBaoA
public class ShuaiBaoView extends SurfaceView implements SurfaceHolder.Callback{
ShuaiBaoActivity main = new ShuaiBaoActivity();
public final static int START = 0;//摔炮开始运动
public final static int PAUSE =1;//软件暂停
public final static int HIT =2;//定义摔炮撞墙是的状态
//监听软件状态
int state = PAUSE;
//定义图片
public Bitmap imgB
public Bitmap imgB
public Bitmap imgB
// private Animation mAnimationT//定义平移的动画
//定义摔炮位置
int initX ;
public int initY ;
private float scalX;
private float scalY;
//定义摔炮运行速度
public int speed = 15;
//定义线程的运行参数
public boolean isStop =
public ShuaiBaoView(Context context,int x,int y) {
super(context);
// TODO Auto-generated constructor stub
this.context =
initY = y-30;//初始化摔炮y轴初始坐标
this.x = x/2-5;;//初始化摔炮x轴坐标
this.y = initY;//初始化摔炮Y周卓表
scalX =//保存屏幕宽
scalY =//保存屏幕高
holder = getHolder();//获取holder
holder.addCallback(this);
Resources res = context.getResources();
imgBao = BitmapFactory.decodeResource(res,R.drawable.shuaibao_bao);
imgBaoend = BitmapFactory.decodeResource(res,R.drawable.shuaipao_baoend);
imgBaobg = BitmapFactory.decodeResource(res,R.drawable.shuaibao_bg);
Matrix matrix=new Matrix();
matrix.postScale(scalX/imgBaobg.getWidth(),
scalY/imgBaobg.getHeight());//获取缩放比例
dstbmp = Bitmap.createBitmap(imgBaobg,0,0,imgBaobg.getWidth(),
imgBaobg.getHeight(),matrix,true);//按缩放比例生成适应屏幕的新的bitmap;
intent = new Intent(&com.soundmanagerbao.android.music&);
setFocusable(true);
public void onDraw(Canvas canvas){
super.onDraw(canvas);
//绘制图片
canvas = holder.lockCanvas(null);//获取画布
Paint mPaint = new Paint();//获取画笔
//画自适应背景
canvas.save();
canvas.drawBitmap(dstbmp, 0, 0, mPaint); //画出图片
canvas.restore();
switch(state){
case PAUSE:{//暂停
canvas.save();
canvas.drawBitmap(imgBao, x, initY,mPaint);
canvas.restore();
case START://开始
canvas.save();
canvas.drawBitmap(imgBao, x, y,mPaint);
canvas.restore();
if(y&=120){
state = HIT;
case HIT:{//撞击
canvas.save();
canvas.drawBitmap(imgBaoend, x, 115,mPaint);
canvas.drawBitmap(imgBaoend, x, 115,mPaint);
canvas.restore();
context.startService(intent);
state = PAUSE;
holder.unlockCanvasAndPost(canvas);
class MyThread implements Runnable{//画图,刷新
public void run() {
// TODO Auto-generated method stub
while(isStop){
Canvas canvas1 =
onDraw(canvas1);
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
new Thread(new MyThread()).start();//开始线程
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
isStop =//返回时关闭线程
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9380435次
积分:69950
积分:69950
排名:第22名
原创:505篇
转载:918篇
评论:2665条
如果您认为本博客不错,读后觉得有收获,不妨打赏赞助我一下,让我有动力继续写出高质量的博客。
赠人玫瑰,手有余香。分享技术,传递快乐。
QQ交流群:
有心课堂会员,请加入VIP QQ交流群:
文章:28篇
阅读:94701
文章:69篇
阅读:442735匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 航拍全景图制作教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信