Android编程实现等比例显示图片的方法_Android

本文实例讲述了Android编程实现等比例显示图片的方法。分享给大家供大家参考,具体如下:

在android中,由于密度的影响,如果想得到图片的宽高是不行的,具体为什么我就大概说一下,具体的请搜索度娘或者古哥吧。 原因是如果你把图片放在drawable-mdpi里,而手机是属于drawable-hdpi的话,图片是被自动放大,就这样取到的宽与高未必就是正确的。那么如何让android上面显示的图片是基于原来图片的比例呢,首先你可以在res目录下创建一个drawable-nodpi的目录,这个目录下的图片是不根据dpi的多少来进行拉伸或者缩小滴。然后,就是根据屏幕的宽 和 图片的宽高 得出图片在屏幕显示的高,宽是固定的,就是屏幕的宽,所以不用算了。

private void getWidth_Height() {
  Display display = getWindowManager().getDefaultDisplay();
  int width = display.getWidth(); // deprecated
  int height = display.getHeight(); // deprecated
  Bitmap mBitmap = createImageWithResouce(R.drawable.history4);
  image.setLayoutParams(new LayoutParams(width, width / getBitmapWidth(mBitmap) * getBitmapHeight(mBitmap)));
  image.setImageBitmap(createImageWithResouce(R.drawable.history4));
}
private Bitmap createImageWithResouce(int resourceID) {
  Bitmap bit = BitmapFactory.decodeResource(getResources(), R.drawable.history4);
  return bit;
}
private int getBitmapWidth(Bitmap bitmap){
  return bitmap.getWidth();
}
private int getBitmapHeight(Bitmap bitmap){
  return bitmap.getHeight();
}
// 释放bitmap
private void releaseBitmap(Bitmap bitmap){
  if (bitmap!=null && !bitmap.isRecycled()) {
   bitmap.recycle();
   bitmap = null;
  }
}

建议使用如下的这种,应用了LruCache作为管理

public class ImageUtil {
 private LruCache<String, Bitmap> mMemoryCache;
 private final Context mContext;
 private static ImageUtil imageUtil;
 private static Object obj = new Object();
 private int memClass;
 private int cacheSize;
 private ImageUtil(Context mContext) {
  this.mContext = mContext;
  createLruCache(mContext);
 }
 private void createLruCache(Context mContext) {
  memClass = ((ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
  cacheSize = 1024 * 1024 * memClass / 8;
  mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
   @Override
   protected int sizeOf(String key, Bitmap value) {
    // TODO Auto-generated method stub
    return value.getRowBytes();
   }
  };
 }
 public static ImageUtil getInstance(Context mContext) {
  if (imageUtil == null) {
   synchronized (obj) {
    if (imageUtil == null) {
     imageUtil = new ImageUtil(mContext);
    }
   }
  }
  return imageUtil;
 }
 public void adjustImageSize(ImageView imageView, int imageResourceId) {
  Bitmap mBitmap = null;
  Display display = ((MainActivity) mContext).getWindowManager().getDefaultDisplay();
  int width = display.getWidth(); // deprecated
  int height = display.getHeight(); // deprecated
  Bitmap bitmapCache = mMemoryCache.get(imageResourceId + "");
  if (bitmapCache != null) {
   mBitmap = bitmapCache;
  } else {
   mBitmap = createImageWithResouce(mContext, imageResourceId);
   mMemoryCache.put(imageResourceId + "", mBitmap);
  }
  RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, width
    / getBitmapWidth(mBitmap) * getBitmapHeight(mBitmap));
  layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
  imageView.setLayoutParams(layoutParams);
  imageView.setBackgroundDrawable(new BitmapDrawable(mBitmap));
  // imageView.setImageBitmap(mBitmap);
 }
 private static Bitmap createImageWithResouce(Context context, int resourceID) {
  Bitmap bit = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
  return bit;
 }
 private int getBitmapWidth(Bitmap bitmap) {
  return bitmap.getWidth();
 }
 private int getBitmapHeight(Bitmap bitmap) {
  return bitmap.getHeight();
 }
}

希望本文所述对大家Android程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 等比例
, 显示图片
Android显示图片
android 实现接口方法、机器人编程设计与实现、编程语言实现模式、编程语言实现模式 pdf、qt 编程实现漂亮界面,以便于您获取更多的相关知识。

时间: 2024-09-20 13:51:35

Android编程实现等比例显示图片的方法_Android的相关文章

Android编程实现等比例显示图片的方法

本文实例讲述了Android编程实现等比例显示图片的方法.分享给大家供大家参考,具体如下: 在android中,由于密度的影响,如果想得到图片的宽高是不行的,具体为什么我就大概说一下,具体的请搜索度娘或者古哥吧. 原因是如果你把图片放在drawable-mdpi里,而手机是属于drawable-hdpi的话,图片是被自动放大,就这样取到的宽与高未必就是正确的.那么如何让android上面显示的图片是基于原来图片的比例呢,首先你可以在res目录下创建一个drawable-nodpi的目录,这个目录

android开发ViewPager按比例显示图片(显示下一张图片的一部分)

重写PageAdapter的方法:   public float getPageWidth(int position) { if (position == 0 || position == 2) { return 0.8f; } return 1f; }   按比例显示图片

Android编程之书架效果背景图处理方法_Android

本文实例讲述了Android编程之书架效果背景图处理方法.分享给大家供大家参考,具体如下: 在android应用中,做一个小说阅读器是很多人的想法,大家一般都是把如何读取大文件,如果在滚动或是翻页时,让用户感觉不到做为重点.我也在做一个类似一功能,可是在做书架的时候,看了QQ阅读的书架,感觉很好看,就想做一个,前面一篇<android书架效果实现原理与代码>对此做了专门介绍,其完整实例代码可点击此处本站下载. 上面的例子很不错,可是有一个问题是他的背景图的宽必须是手机屏幕的宽,不会改变,这样感

Android编程实现向桌面添加快捷方式的方法_Android

本文实例讲述了Android编程实现向桌面添加快捷方式的方法.分享给大家供大家参考,具体如下: 有时候为了使用方便,需要在桌面上添加快捷方式,下面是两种添加快捷方式的方法: 方法1: void setshortCut() { Intent addShortcut = new Intent(); // 设置快捷方式的名字 addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "快捷方式练习"); // 构建快捷方式中专门的图标 Parcelab

Android编程实现自定义系统菜单背景的方法_Android

本文实例讲述了Android编程实现自定义系统菜单背景的方法.分享给大家供大家参考,具体如下: 不多说,上图,见代码. package lab.sodino.menutest; import android.content.Context; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.AttributeSet; import androi

Android编程之防止反编译的实现方法_Android

本文实例讲述了Android编程之防止反编译的实现方法.分享给大家供大家参考,具体如下: 1. 判断程序是否运行在模拟器上 boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec("getprop ro.kernel.qemu"); os

Android编程实现系统重启与关机的方法_Android

本文实例讲述了Android编程实现系统重启与关机的方法.分享给大家供大家参考,具体如下: 最近在做个东西,巧合碰到了sharedUserId 的问题,所以收集了一些资料,存存档备份. 安装在设备中的每一个apk文件,Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是对应一个 Linux 用户都会被分配到一个属于自己的统一的 Linux 用户 ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它). 用户 ID 在应用

Android编程获取并设置Activity亮度的方法_Android

本文实例讲述了Android编程获取并设置Activity亮度的方法.分享给大家供大家参考,具体如下: 此API只适合2.1以上版本: /** * 判断是否开启了自动亮度调节 * * @param aContext * @return */ public static boolean isAutoBrightness(ContentResolver aContentResolver) { boolean automicBrightness = false; try { automicBright

Android编程实现获取图片资源的四种方法_Android

本文实例讲述了Android编程实现获取图片资源的四种方法.分享给大家供大家参考,具体如下: 1. 图片放在sdcard中: 复制代码 代码如下: Bitmap imageBitmap = BitmapFactory.decodeFile(path)//path 是图片的路径,跟目录是/sdcard   2. 图片在项目的res文件夹下面 //得到application对象 ApplicationInfo appInfo = getApplicationInfo(); //得到该图片的id(na