ShowPoritionPictureActivity代码:

[java] <span style="font-size:16px;">

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); 

    } 

</span> 

<span style="font-size:16px;">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);

        // 得到图片的长和宽 www.2cto.com

        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);

    }

</span>

PoritionView类代码:

[java] <span style="font-size:16px;">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; 

    } 



</span> 

<span style="font-size:16px;">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;

 }

}

</span>

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

用android代码显示图片的一部分源码的更多相关文章

  1. JAVA 显示图片的简单源码 分类: Java Game 2014-08-14 10:10 77人阅读 评论(0) 收藏

    此代码的原理就是用JLabel来加载图片,再将JLabel放入JFrame中, package com.mywork; import javax.swing.ImageIcon; import jav ...

  2. 50个Android开发人员必备UI效果源码[转载]

    50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...

  3. [转载] 50个Android开发人员必备UI效果源码

    好东西,多学习! Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面A ...

  4. 黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器

    1 该项目的主要功能就是从将后台的html网页在Android的界面上显示出来 后台就是建立一个java web工程在工程尚建立一个html或者jsp文件就可以了,这里主要看Android客户端的程序 ...

  5. Android 网络图片查看器与网页源码查看器

    在AndroidManifest.xml里面先添加访问网络的权限: <uses-permission android:name="android.permission.INTERNET ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  8. Android进阶:五、RxJava2源码解析 2

    上一篇文章Android进阶:四.RxJava2 源码解析 1里我们讲到Rxjava2 从创建一个事件到事件被观察的过程原理,这篇文章我们讲Rxjava2中链式调用的原理.本文不讲用法,仍然需要读者熟 ...

  9. 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/54562606 网上关于编译Android源码的教程已经很多了,但是讲怎么编译And ...

随机推荐

  1. unity资源

    unity资源集中贴 1.unity经验之谈 http://jingyan.baidu.com/article/19192ad820f17be53e570715.html 2.百度网盘,分享了一点模型 ...

  2. 探秘IntelliJ IDEA v13的应用服务器

    原文:探秘IntelliJ IDEA v13的应用服务器 IntelliJ IDEA v13应用out-of-the-box支持众多企业级和开源的服务器,包括:GlassFish.WebLogic. ...

  3. linux有用技巧:使用快照制作虚拟机

    在日常的学习其中,假设遇到了集群和负载均衡类的实验,须要用到大量的虚拟机,假设一个一个的去创建,显然是很费力和低效的.所以今天交给大家怎样用快照来制作虚拟机.想要多少给你多少^_^.仅仅要内存够用! ...

  4. Oracle 11g+FluentNHibernate AutoMapping组合尝试

    一次Oracle 11g+FluentNHibernate AutoMapping组合尝试 本文的上下文环境 操作系统:Win7 x64 Ultimate开发工具:Visual Studio 2013 ...

  5. C#编程实践–帮老婆计算产假方案

    摘要 今天中午午休时,和老婆聊天,老婆还过几天就要请产假了,她在网上问我让我帮她数一下该怎么请假最划算,老婆是个会过日子的人,面对此种要求我当然义不容辞,不过想到这个问题我的第一反应是:这个怎么可以用 ...

  6. 枚举for/in

    for/in循环可以遍历对象中所有可以枚举的属性(包括自有属性和继承属性).对象继承的内置方法不能枚举,凡是在代码中给对象自己或者继承的类添加的属性方法都是可枚举的,但是对象自有的内置属性可不可以枚举 ...

  7. UrlRouting的理解

    UrlRouting的理解 文章内容 根据对Http Runtime和Http Pipeline的分析,我们知道一个ASP.NET应用程序可以有多个HttpModuel,但是只能有一个HttpHand ...

  8. Prototype,创建型模式

    读书笔记_探索式测试_混合探索式测试   一.测试场景 1.讲述用户故事 2.描述需求 3.演示产品功能 4.演示集成场景 5.描述设置和安装 6.描述警告和出错情况 二.使用基于场景的探索式测试 1 ...

  9. 设计模式之观察者模式(Observable与Observer)

    设计模式之观察者模式(Observable与Observer) 好久没有写博客啦,之前看完了<设计模式之禅>也没有总结一下,现在回忆一下设计模式之观察者模式. 1.什么是观察者模式 简单情 ...

  10. Hashtable Dictionary List

    Hashtable Dictionary List 谁效率更高   一 前言 很少接触HashTable晚上回来简单看了看,然后做一些增加和移除的操作,就想和List 与 Dictionary比较下存 ...