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

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

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

androidmatrixfloatconstructorclassnull

作者:张宗硕

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的那部分图片

时间: 2024-10-17 18:00:13

android中如何显示图片的一部分的相关文章

Android中播放Gif图片的方法

Android中播放Gif图片的方法. 主要原理是取出Gif中的每一帧图片,分别设置到ImageView上边展示出来 使用到Code.Google上边的一个开源类库GifDecoder,下载不了的可以从我后边给出的Demo中搬运. 准备一个类继承自ImageView重写其构造方法同时传入一个输入流. [java] view plaincopyprint? <span style="font-size:18px;">public class GifDecoderView ex

Android中EditText显示明文与密文的两种方式

效果图   布局文件 <?xml version="1.0" encoding="utf-8"?> <!-- Android中EditText显示明文与密文的两种方式 --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to

[安卓基础] 008.Android中的显示单位

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

Android中TextView显示省略号

记录一下Android中Textview显示省略号的属性: android:ellipsize="end"里面有很多设置属性包括start,end,middle等等,很容易理解,这里不多做解释.

android中实现带图片和checkbox的listview

android中实现带图片和checkbox的listview

Android中Textview显示带html文本【Textview显示本地图片】

Textview可以显示基本的HTML标签 <a href="..."> <b> <big> <blockquote> <br> <cite> <dfn> <div align="..."> <em> <font size="..." color="..." face="..."> <

在android中画圆形图片的几种办法

在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状.但是往往我们手上的图片或者从服务器获取到的图片都是方形的.这时候就需要我们自己进行处理,将图片处理成所需要的形状.正如茴香豆的的"茴"写法大于一种,经过我的研究,画出特殊图片的方法也不是一种,我发现了三种,且听我一一道来. 使用Xfermode 两图相交方式 通过查找资料发现android中可以设置画笔的Xfermode即相交模式,从而设置两张图相交之后的显示方式,具体模式见下图,源

Android中常见的图片加载框架

图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行图片加载. 开源框架的源码还是挺复杂的,但使用较为简单.大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同需要.这样会减少很不必要的麻烦.同时,第三方框架的使用较为方便,这大大的减少了工作量.提高了开发效率.本文主要介绍四种常用的图片加载框架,

Android中.9.png图片的使用过程和原理

1.Android中放置图片资源的文件夹 Android中一般有drawable-ldpi.drawable-mdpi.drawable-hdpi.drawable-xhdpi.drawable-xxhdpi等放置图片资源的文件夹,这几个文件夹分别对应的像素密度为: 文件夹 对应的像素密度 drawable-ldpi 120dpi drawable-mdpi 160dpi drawable-hdpi 240dpi drawable-xhdpi 320dpi 图-1 另外自己可以创建一个默认的dr