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

 更新时间:2016年10月29日 11:58:29   作者:pku_android  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • Android多媒体应用使用SoundPool播放音频

    Android多媒体应用使用SoundPool播放音频

    这篇文章主要为大家详细介绍了Android多媒体应用使用SoundPool播放音频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android 个人理财工具二:使用SQLite实现启动时初始化数据

    Android 个人理财工具二:使用SQLite实现启动时初始化数据

    本文主要介绍 Android 使用SQLite实现启动时初始化数据,这里对SQLite 的数据库进行详解,附有示例代码,有兴趣的小伙伴可以参考下
    2016-08-08
  • Android Flutter在点击事件上添加动画效果实现全过程

    Android Flutter在点击事件上添加动画效果实现全过程

    这篇文章主要给大家介绍了关于Android Flutter在点击事件上添加动画效果实现的相关资料,通过实例代码介绍的非常详细,对大家学习Android具有一定的参考学习价值,需要的朋友可以参考下
    2023-03-03
  • RecyclerView设置间距和添加分割线的方法

    RecyclerView设置间距和添加分割线的方法

    在使用RecyclerView布局,经常需要调整间距和添加分割线以达到更美观效果,这篇文章主要介绍了RecyclerView设置间距和添加分割线的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Android中ScrollView嵌套GridView的解决办法

    Android中ScrollView嵌套GridView的解决办法

    前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全。下面小编给大家分享下解决方案,需要的朋友可以参考下
    2017-04-04
  • Android 仿网易新闻客户端分类排序功能

    Android 仿网易新闻客户端分类排序功能

    这篇文章主要介绍了Android 仿网易新闻客户端分类排序功能,实现此功能涉及到拖拽item及隐藏拖拽的Item的方法,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧
    2016-12-12
  • Android仿淘宝物流信息TimeLineView

    Android仿淘宝物流信息TimeLineView

    这篇文章主要为大家详细介绍了Android仿淘宝物流信息TimeLineView的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android Canvas的drawText()与文字居中方案详解

    Android Canvas的drawText()与文字居中方案详解

    这篇文章主要给大家介绍了关于Android Canvas的drawText()与文字居中方案的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • DrawerLayout结合Tollbar实现菜单侧滑效果

    DrawerLayout结合Tollbar实现菜单侧滑效果

    这篇文章主要为大家详细介绍了DrawerLayout结合Tollbar实现菜单侧滑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android蓝牙通信之搜索蓝牙设备

    Android蓝牙通信之搜索蓝牙设备

    这篇文章主要介绍了Android蓝牙通信之搜索蓝牙设备,需要的朋友可以参考下
    2017-09-09

最新评论