Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio-在线下载图像_Java_Android_Image_Android Studio - Fatal编程技术网

Java Android Studio-在线下载图像

Java Android Studio-在线下载图像,java,android,image,android-studio,Java,Android,Image,Android Studio,在我的应用程序中,我希望能够从一个站点(ddragon)加载大量图像。 问题是,每次我想加载一个图像时,都需要花费大量的时间和电源,保存这些照片会占用很多时间,这也是一个问题 我想知道处理大量大尺寸图像(500+)的最佳方法是什么(高度和宽度为200~300 dp),谢谢 (现在我正在使用通用图像加载器) 我建议使用第三方库,而不是重新发明轮子。Square有一个图书馆,叫做that's相当受欢迎 你可以这样做: Picasso.with(context) .load(url) .resize(

在我的应用程序中,我希望能够从一个站点(ddragon)加载大量图像。
问题是,每次我想加载一个图像时,都需要花费大量的时间和电源,保存这些照片会占用很多时间,这也是一个问题

我想知道处理大量大尺寸图像(500+)的最佳方法是什么(高度和宽度为200~300 dp),谢谢

(现在我正在使用通用图像加载器)


我建议使用第三方库,而不是重新发明轮子。Square有一个图书馆,叫做that's相当受欢迎

你可以这样做:

Picasso.with(context)
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)
也是一种流行的方法。

MainActivity.java

import java.io.InputStream;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.ImageView;
公共类MainActivity扩展了活动{
//将图像URL设置为字符串
String URL=“例如,图像URLhttp://www.google.com";
图像视图图像;
按钮;
进程对话框;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//从image.xml获取布局
setContentView(R.layout.activity_main);
//在activity_main.xml中找到ImageView
image=(ImageView)findviewbyd(R.id.image);
//在activity_main.xml中找到该按钮
按钮=(按钮)findViewById(R.id.button);
//捕获按钮点击
setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
//执行下载映像任务
新建DownloadImage().execute(URL);
}
});
}
//下载图像异步任务
私有类DownloadImage扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//创建一个progressdialog
mProgressDialog=新建ProgressDialog(MainActivity.this);
//设置进程对话框标题
setTitle(“下载图像教程”);
//设置进程对话框消息
设置消息(“加载…”);
mProgressDialog.setUndeterminate(false);
//显示进度对话框
mProgressDialog.show();
}
@凌驾
受保护位图doInBackground(字符串…URL){
字符串imageURL=URL[0];
位图=空;
试一试{
//从URL下载图像
InputStream输入=新的java.net.URL(imageURL.openStream();
//解码位图
位图=BitmapFactory.decodeStream(输入);
}捕获(例外e){
e、 printStackTrace();
}
返回位图;
}
@凌驾
受保护的void onPostExecute(位图结果){
//将位图设置为ImageView
image.setImageBitmap(结果);
//关闭进程对话框
mProgressDialog.disclose();
}
}
}
活动\u main.xml


舱单中的互联网许可

<uses-permission android:name="android.permission.INTERNET" >


毕加索还有一个缓存选项,可以减少对那些大图像的重复调用。
import java.io.InputStream;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

    // Set your Image URL into a string
    String URL = "Image URL for example http://www.google.com";
    ImageView image;
    Button button;
    ProgressDialog mProgressDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the layout from image.xml
        setContentView(R.layout.activity_main);

        // Locate the ImageView in activity_main.xml
        image = (ImageView) findViewById(R.id.image);

        // Locate the Button in activity_main.xml
        button = (Button) findViewById(R.id.button);

        // Capture button click
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {

                // Execute DownloadImage AsyncTask
                new DownloadImage().execute(URL);
            }
        });
    }

    // DownloadImage AsyncTask
    private class DownloadImage extends AsyncTask<String, Void, Bitmap> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Create a progressdialog
            mProgressDialog = new ProgressDialog(MainActivity.this);
            // Set progressdialog title
            mProgressDialog.setTitle("Download Image Tutorial");
            // Set progressdialog message
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            // Show progressdialog
            mProgressDialog.show();
        }

        @Override
        protected Bitmap doInBackground(String... URL) {

            String imageURL = URL[0];

            Bitmap bitmap = null;
            try {
                // Download Image from URL
                InputStream input = new java.net.URL(imageURL).openStream();
                // Decode Bitmap
                bitmap = BitmapFactory.decodeStream(input);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            // Set the bitmap into ImageView
            image.setImageBitmap(result);
            // Close progressdialog
            mProgressDialog.dismiss();
        }
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
    </ImageView>

    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/image"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/button" />

</RelativeLayout>
<uses-permission android:name="android.permission.INTERNET" >