Android编程实现只显示图片一部分的方法
本文实例讲述了Android编程实现只显示图片一部分的方法。分享给大家供大家参考,具体如下:
在Android应用程序中加载一张图片,然后把它显示出来这是一件非常容易的事情,那怎么才能显示一张图片的一小部分呢,一种做法是把图片ps一下,要显示的那部分单独存成一张图片,然后程序中加载它,并把它显示出来。但这样会增加程序的图片量。对一张完整的图,用程序去切割你想要的那部分也是很简单的。
下面实现的一个程序,是加载了一张图片,然后经过变换让图片填充到手机的整个屏幕,然后在屏幕的中间显示图片中间的100*100的部分。
ShowPoritionPictureActivity代码:
packagecom.iwin.zzs;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Matrix;
importandroid.os.Bundle;
importandroid.util.DisplayMetrics;
importandroid.view.WindowManager;
publicclassShowPoritionPictureActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
BitmappicRes;
BitmapshowPic;
//获取原图片的宽和高
intpicWidth;
intpicHeight;
privatePoritionViewporitonView=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//不显示状态栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetricsdm=newDisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
//得到屏幕的长和宽
intscreenWidth=dm.widthPixels;//水平分辨率
intscreenHeight=dm.heightPixels;//垂直分辨率
picRes=BitmapFactory.decodeResource(this.getResources(),R.drawable.girl);
//得到图片的长和宽
picWidth=picRes.getWidth();
picHeight=picRes.getHeight();
//计算缩放率,新尺寸除原始尺寸
floatscaleWidth=((float)screenWidth)/picWidth;
floatscaleHeight=((float)screenHeight)/picHeight;
//创建操作图片用的matrix对象
Matrixmatrix=newMatrix();
//缩放图片动作
matrix.postScale(scaleWidth,scaleHeight);
//新得到的图片是原图片经过变换填充到整个屏幕的图片
BitmappicNewRes=Bitmap.createBitmap(picRes,0,0,picWidth,picHeight,matrix,true);
//bitmap=Bitmap.createBitmap(400,480,Bitmap.Config.ARGB_8888);
//canvas=newCanvas();
//canvas.setBitmap(bitmap);
showPic=Bitmap.createBitmap(picNewRes,screenWidth/2-50,screenHeight/2-50,100,100);
poritonView=newPoritionView(this);
poritonView.setBitmapShow(showPic,screenWidth/2-50,screenHeight/2-50);
setContentView(poritonView);
}
新建PoritionView类代码:
packagecom.iwin.zzs;
importandroid.content.Context;
importandroid.graphics.Bitmap;
importandroid.graphics.Canvas;
importandroid.view.View;
publicclassPoritionViewextendsView{
privateBitmapshowPic=null;
privateintstartX=0;
privateintstartY=0;
publicPoritionView(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
@Override
protectedvoidonDraw(Canvascanvas){
//TODOAuto-generatedmethodstub
super.onDraw(canvas);
canvas.drawBitmap(showPic,startX,startY,null);
}
publicvoidsetBitmapShow(Bitmapb,intx,inty)
{
showPic=b;
startX=x;
startY=y;
}
}
在工程res/drawable里面添加图片gir.png,运行程序的效果是只显示图片的中间100*100的那部分图片。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。