文档章节

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

Jonson
 Jonson
发布于 2015/02/26 17:09
字数 596
阅读 125
收藏 10
点赞 0
评论 0

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 ImageView图片显示点击背景切换

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

amigos_wu
2012/05/25
0
0
android XML布局大全

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

牛牛张
2015/07/09
0
0
ViewSwitcher学习笔记

ViewSwitcher 的作用简单来说就是:在两个视图间转换时显示动画 它的两个子类应该很熟悉,ImageSwitcher:转换图片时增加动画效果; TextSwitcher: 转换文字时增加动画效果; API翻译 一、结构...

无一物
2012/12/20
0
0
Android 众多的布局属性详解

Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料,花费本人一个下午搞出来的,希望对其他人有用。 第一类:属性值为true或false android:lay...

GeorgeBrown
2015/06/09
0
0
android Bitmap的内存优化

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

ljrapple
2014/08/12
0
0
android 布局特殊的属性介绍

EditText的android:hint   设置EditText为空时输入框内的提示信息。 android:gravity   android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在vie...

方毅超
2014/05/17
0
0
android TextView属性详解

RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layoutcenterHrizontal 水平居中 android:layoutcenterVertical 垂直居中 android:layoutcenterInparent 相对于父...

mutouzhang
2014/03/19
0
0
Android应用开发中对Bitmap的内存优化

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

等待流星
2014/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

代码生成利器:IDEA 强大的 Live Templates

代码生成利器:IDEA 强大的 Live Templates

qwfys
25分钟前
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
28分钟前
1
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
31分钟前
0
0
日常运维--rsync同步工具

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而...

chencheng-linux
35分钟前
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
47分钟前
1
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
0
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
1
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
0
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
1
0
rsync工具介绍/rsync通过ssh同步

rsync工具介绍 数据备份是必不可少,在Linux系统下数据备份的工具很多,其中重点介绍就是rsync工具,rsync不仅可以远程同步数据,还可以本地同步数据,且不会覆盖以前的数据在已经存在的数据...

Hi_Yolks
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部