• 加载图片 获取屏幕宽高


     1 package com.itheima.getimage;
     2 
     3 import android.app.Activity;
     4 import android.content.Intent;
     5 import android.database.Cursor;
     6 import android.graphics.Bitmap;
     7 import android.graphics.BitmapFactory;
     8 import android.graphics.BitmapFactory.Options;
     9 import android.net.Uri;
    10 import android.os.Bundle;
    11 import android.view.View;
    12 import android.view.WindowManager;
    13 import android.widget.ImageView;
    14 
    15 public class MainActivity extends Activity {
    16 
    17     private ImageView iv;
    18 
    19     @Override
    20     protected void onCreate(Bundle savedInstanceState) {
    21         super.onCreate(savedInstanceState);
    22         setContentView(R.layout.activity_main);
    23         
    24         iv = (ImageView) findViewById(R.id.iv);
    25     }
    26     
    27     public void open(View v) {
    28         Intent intent = new Intent(Intent.ACTION_PICK);
    29         intent.setType("image/*");
    30         startActivityForResult(intent, 100);
    31     }
    32     
    33     @Override
    34     protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    35         Uri uri = intent.getData();
    36         String path = getAbsolutePath(uri);
    37         Bitmap bm = getUsableBitmap(path);
    38         iv.setImageBitmap(bm);
    39         System.out.println(bm.getWidth() + ", " + bm.getHeight());
    40     }
    41     
    42     public String getAbsolutePath(Uri uri) {
    43         Cursor c = getContentResolver().query(uri, new String[] { "_data" }, null, null, null);
    44         c.moveToNext();
    45         return c.getString(0);
    46     }
    47     
    48     @SuppressWarnings("deprecation")
    49     private Bitmap getUsableBitmap(String path) {
    50         Options opts = new Options();
    51         opts.inJustDecodeBounds = true;            // 设置只加载图片大小
    52         BitmapFactory.decodeFile(path, opts);
    53         
    54         WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
    55         int width = manager.getDefaultDisplay().getWidth();        // 屏幕宽度
    56         int height = manager.getDefaultDisplay().getHeight();    // 屏幕高度
    57         
    58         int xScale = opts.outWidth / width;
    59         int yScale = opts.outHeight / height;
    60         int scale = xScale > yScale ? xScale : yScale;    // 计算缩放比例
    61         
    62         opts.inJustDecodeBounds = false;                // 设置不只加载图片大小
    63         opts.inSampleSize = scale;                        // 设置缩放比例
    64         return BitmapFactory.decodeFile(path, opts);    // 按照设置加载图片(缩放)
    65     }
    66 
    67 }
    68     
  • 相关阅读:
    csrf攻击 xss区别
    同源策略
    JavaScript中数组的排序——sort()
    箭头函数
    bind(),call(),apply()
    异步操作
    slice(), splice(),split(),indexOf(),join(),replace()
    04-Linux系统编程-第01天(文件IO、阻塞非阻塞)
    03-Linux命令基础-第03天(makefile、静态库、动态库、gdb调试工具)
    02-Linux命令基础-第02天(压缩包管理、服务器搭建与使用、vim)
  • 原文地址:https://www.cnblogs.com/friends-wf/p/4535074.html
Copyright © 2020-2023  润新知