文档章节

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

Jonson
 Jonson
发布于 2015/02/26 17:09
字数 596
阅读 126
收藏 10

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



本文转载自:http://cache.baiducontent.com/c?m=9d78d513d9901df918b0cf281a16a671682097153ac0a16668a4e45f92144c3...

共有 人打赏支持
Jonson
粉丝 21
博文 131
码字总数 17942
作品 0
肇庆
Android开发优化之——对Bitmap的内存优化

在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优...

KingMing
2015/04/03
0
0
[Android] Android开发优化之——对Bitmap的内存优化

在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优...

haman
2014/01/25
0
1
android Bitmap的内存优化

在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优...

ljrapple
2014/08/12
0
0
android XML布局大全

第一类:属性值为true或false android:layoutcenterHrizontal 水平居中 android:layoutcenterVertical 垂直居中 android:layoutcenterInparent 相对于父元素完全居中 android:layoutalignPar......

牛牛张
2015/07/09
0
0
Android ImageView图片显示点击背景切换

一.介绍 ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 二.XML属性 android:adjustViewBounds 是否保持宽高比。需要与maxWidth、MaxHeight一起使用,单独使用没有效果...

amigos_wu
2012/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部