欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现只显示图片一部分的方法

程序员文章站 2024-03-02 19:28:10
本文实例讲述了android编程实现只显示图片一部分的方法。分享给大家供大家参考,具体如下: 在android应用程序中加载一张图片,然后把它显示出来这是一件非常容易的事...

本文实例讲述了android编程实现只显示图片一部分的方法。分享给大家供大家参考,具体如下:

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

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

showporitionpictureactivity代码:

package com.iwin.zzs;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.graphics.matrix;
import android.os.bundle;
import android.util.displaymetrics;
import android.view.windowmanager;
public class showporitionpictureactivity extends activity {
  /** called when the activity is first created. */
  bitmap picres;
  bitmap showpic;
  //获取原图片的宽和高
  int picwidth;
  int picheight;
  private poritionview poritonview = null;
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    // 不显示状态栏
    this.getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,windowmanager.layoutparams.flag_fullscreen);
    displaymetrics dm = new displaymetrics();
    this.getwindowmanager().getdefaultdisplay().getmetrics(dm);
    // 得到屏幕的长和宽
    int screenwidth = dm.widthpixels; //水平分辨率
    int screenheight = dm.heightpixels; //垂直分辨率
    picres = bitmapfactory.decoderesource(this.getresources(), r.drawable.girl);
    // 得到图片的长和宽
    picwidth = picres.getwidth();
    picheight = picres.getheight();
    // 计算缩放率,新尺寸除原始尺寸
    float scalewidth = ((float) screenwidth ) / picwidth;
    float scaleheight = ((float) screenheight ) / picheight;
    // 创建操作图片用的matrix对象
    matrix matrix = new matrix();
    // 缩放图片动作
    matrix.postscale(scalewidth, scaleheight);
    // 新得到的图片是原图片经过变换填充到整个屏幕的图片
    bitmap picnewres = bitmap.createbitmap(picres, 0, 0,picwidth, picheight, matrix, true);
    // bitmap = bitmap.createbitmap(400, 480, bitmap.config.argb_8888);
    // canvas=new canvas();
    // canvas.setbitmap(bitmap);
    showpic = bitmap.createbitmap(picnewres, screenwidth/2-50, screenheight/2-50, 100, 100);
    poritonview = new poritionview(this);
    poritonview.setbitmapshow(showpic, screenwidth/2-50, screenheight/2-50);
    setcontentview(poritonview);
}

新建poritionview类代码:

package com.iwin.zzs;
import android.content.context;
import android.graphics.bitmap;
import android.graphics.canvas;
import android.view.view;
public class poritionview extends view {
  private bitmap showpic = null;
  private int startx = 0;
  private int starty = 0;
  public poritionview(context context) {
    super(context);
    // todo auto-generated constructor stub
  }
  @override
  protected void ondraw(canvas canvas) {
    // todo auto-generated method stub
    super.ondraw(canvas);
    canvas.drawbitmap(showpic, startx, starty, null);
  }
  public void setbitmapshow(bitmap b, int x, int y)
  {
    showpic = b;
    startx = x;
    starty = y;
  }
}

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

更多关于android相关内容感兴趣的读者可查看本站专题:《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。