在开发中,加入我们的使用的图片来自网页,没有人知道它的大小,这时我们还怎么做呢?
图片的大小我们可以让后台给我们指定一下,为什么呢? 因为如果我们不指定图片的大小而是使用加载图片的组件的适配去做,会出现有时候的图片的大小和我们指定的图片大小和缩放的规则错差特别大,出现图片被拉伸或者是压缩的图片,为什么说来自网页的图片会不好计算大小呢?其实不管怎么杨的图片 都可以,并且使用之前不知道所以组件的大小我们指定后会出现问题的
所以我在我们要获取到图片的大小,再去计算控件因该使用的大小
fun getInputStream(path: String): InputStream { var inPutStream: InputStream? = null if (!TextUtils.isEmpty(path)) { val url: URL = URL(path) val openConnection: HttpURLConnection = url.openConnection() as HttpURLConnection openConnection.connectTimeout = 5 * 1000 openConnection.doInput = true //打开输入流 openConnection.requestMethod = "GET" if (200 == openConnection.responseCode) { inPutStream = openConnection.inputStream } else { Toast.makeText(this, "连接失败", Toast.LENGTH_SHORT).show() } } return inPutStream!! } fun getBitmap(url: String): IntArray { val size: IntArray = intArrayOf(2) object : AsyncTask<Void, Void, Bitmap>() { override fun doInBackground(vararg params: Void): Bitmap? { System.out.println("url : " + url) val input: InputStream = getInputStream(url) if (input != null) { return BitmapFactory.decodeStream(input); } else { return null } } override fun onPostExecute(result: Bitmap?) { super.onPostExecute(result) var result: Bitmap = result!! if (result == null) { result = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher) } size[0] = result!!.width size[1] = result!!.height System.out.println("bitmap.getWidth() : " + result.width) System.out.println("bitmap.getHeight() : " + result.height) super.onPostExecute(result); } }.execute() return size }这样 我们就拿到了图片的大小,我们再根据图片的大小计算控件的大小,然后给控件设置图片,就能减少图片被压缩活着拉伸的问题了