android中如何显示图片的一部分

分类:Android应用开发系列教程Android应用开发技巧2012-04-25 23:421728人阅读评论(0)收藏举报

androidmatrixfloatconstructorclassnull

作者:张宗硕


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;@OverridepublicvoidonCreate(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}@OverrideprotectedvoidonDraw(Canvascanvas){//TODOAuto-generatedmethodstubsuper.onDraw(canvas);canvas.drawBitmap(showPic,startX,startY,null);}publicvoidsetBitmapShow(Bitmapb,intx,inty){showPic=b;startX=x;startY=y;}}



在工程res/drawable里面添加图片gir.png,运行程序的效果是只显示图片的中间100*100的那部分图片



更多相关文章

  1. android 程序开发 R.### cannot be resolved
  2. 如何在EditText中设置固定图片——Android移动开发
  3. Android应用程序消息处理机制(Looper、Handler)分析(6)
  4. android 完全退出应用程序
  5. 【Android Developers Training】 12. 支持不同屏幕
  6. android 快速滚动条设置(像新浪微博,滚动的时候会出现悬浮的滚动
  7. picasso-强大的Android图片下载缓存库

随机推荐

  1. Android与服务器端数据交互(http协议整合s
  2. Android(安卓)DrawerLayout 高仿QQ5.2双
  3. Android(安卓)瘦身之道 ---- so文件
  4. Log分析
  5. 专题 - Web应用
  6. Android入门第十六篇之Style与Theme
  7. Android(安卓)计时器Timer用法
  8. 如何使用Jdbc和Servlet操作Mysql数据库,编
  9. Android复合文本SpannableString使用总结
  10. Android实现多页左右滑动效果,支持子view