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

来源:互联网 发布:glibc 源码 编辑:程序博客网 时间:2024/04/28 17:55

 在android应用程序中加载一张图片,然后把它显示出来这是一件非常容易的事情,那怎么才能显示一张图片的一小部分呢,一种做法是把图片ps一下,要显示的那部分单独存成一张图片,然后程序中加载它,并把它显示出来。但这样会增加程序的图片量。对一张完整的图,用程序去切割你想要的那部分也是很简单的。

下面实现的一个程序,是加载了一张图片,然后经过变换让图片填充到手机的整个屏幕,然后在屏幕的中间显示图片中间的100*100的部分。

ShowPoritionPictureActivity代码:


[java] view plaincopyprint?
  1. <span style="font-size: 16px;">package com.iwin.zzs;  
  2.   
  3. import android.app.Activity;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.graphics.Matrix;  
  7. import android.os.Bundle;  
  8. import android.util.DisplayMetrics;  
  9. import android.view.WindowManager;  
  10.   
  11. public class ShowPoritionPictureActivity extends Activity {  
  12.     /** Called when the activity is first created. */  
  13.     Bitmap picRes;  
  14.       
  15.     Bitmap showPic;  
  16.       
  17.     //获取原图片的宽和高  
  18.     int picWidth;  
  19.     int picHeight;  
  20.       
  21.     private PoritionView poritonView = null;  
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.           
  27.         // 不显示状态栏  
  28.         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  29.         DisplayMetrics dm = new DisplayMetrics();  
  30.         this.getWindowManager().getDefaultDisplay().getMetrics(dm);  
  31.           
  32.         // 得到屏幕的长和宽  
  33.         int screenWidth = dm.widthPixels;                //水平分辨率  
  34.         int screenHeight = dm.heightPixels;              //垂直分辨率  
  35.           
  36.           
  37.         picRes = BitmapFactory.decodeResource(this.getResources(), R.drawable.girl);  
  38.         // 得到图片的长和宽  
  39.         picWidth = picRes.getWidth();  
  40.         picHeight = picRes.getHeight();  
  41.           
  42.         // 计算缩放率,新尺寸除原始尺寸  
  43.         float scaleWidth = ((float) screenWidth ) / picWidth;  
  44.         float scaleHeight = ((float) screenHeight ) / picHeight;  
  45.           
  46.         // 创建操作图片用的matrix对象  
  47.         Matrix matrix = new Matrix();  
  48.         // 缩放图片动作  
  49.         matrix.postScale(scaleWidth, scaleHeight);  
  50.         // 新得到的图片是原图片经过变换填充到整个屏幕的图片  
  51.         Bitmap picNewRes = Bitmap.createBitmap(picRes, 00,picWidth, picHeight, matrix, true);  
  52.         // bitmap = Bitmap.createBitmap(400, 480, Bitmap.Config.ARGB_8888);  
  53.         // canvas=new Canvas();           
  54.         // canvas.setBitmap(bitmap);   
  55.           
  56.         showPic = Bitmap.createBitmap(picNewRes, screenWidth/2-50, screenHeight/2-50100100);  
  57.           
  58.         poritonView = new PoritionView(this);  
  59.         poritonView.setBitmapShow(showPic, screenWidth/2-50, screenHeight/2-50);  
  60.         setContentView(poritonView);  
  61.     }  
  62. </span>  


   新建PoritionView类代码:


[java] view plaincopyprint?
  1. <span style="font-size: 16px;">package com.iwin.zzs;  
  2.   
  3. import android.content.Context;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.Canvas;  
  6. import android.view.View;  
  7.   
  8. public class PoritionView extends View {  
  9.     private Bitmap showPic = null;  
  10.     private int startX = 0;  
  11.     private int startY = 0;  
  12.     public PoritionView(Context context) {  
  13.         super(context);  
  14.         // TODO Auto-generated constructor stub  
  15.     }  
  16.   
  17.     @Override  
  18.     protected void onDraw(Canvas canvas) {  
  19.         // TODO Auto-generated method stub  
  20.         super.onDraw(canvas);  
  21.         canvas.drawBitmap(showPic, startX, startY, null);  
  22.     }  
  23.     public void setBitmapShow(Bitmap b, int x, int y)  
  24.     {  
  25.         showPic = b;  
  26.         startX = x;  
  27.         startY = y;  
  28.     }  
  29. }  
  30. </span>  

0 0
原创粉丝点击