将图像从 URL 加载到 Picasso
Load Image From URL to Picasso
我为 Android 写了一个壁纸应用程序。我使用 Picasso 从给定的 URL 下载、缓存和显示图像。
在 mainActivity 中,我有一个 Gridview,其中加载了图像。
并且在 Activity两个中我有显示所选图像的 Imageview
但问题是图像加载非常非常慢(例如 300Kb 图像在 10 秒内加载)。
如何使图片加载速度更快?
这是我的代码:
MainActivity.Java
public class 主要Activity 扩展 Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, ActivityTwo.class);
intent.putExtra("position", position);
startActivity(intent);
}
});
}
// our custom adapter
private class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context context) {
mContext = context;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
ImageView imageView;
// check to see if we have a view
if (convertView == null) {
// no view - so create a new one
imageView = new ImageView(mContext);
} else {
// use the recycled view object
imageView = (ImageView) convertView;
}
// Picasso.with(MainActivity.this).setDebugging(true);
Picasso.with(MainActivity.this)
.load(mThumbIds[position])
.placeholder(R.raw.place_holder)
.error(R.raw.big_problem)
.noFade().resize(250, 250)
.into(imageView);
return imageView;
}
}
static String[] mThumbIds = {
//My Links Here
};
}
试试 Glide 库。它加载图像的速度比 Picasso 库快。有关详细信息,请参阅此 link.
要包含的库
dependencies {
compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.android.support:support-v4:22.0.0'
}
使用它来加载图像:
Glide.with(context)
.load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")
.into(ivImg);
我为 Android 写了一个壁纸应用程序。我使用 Picasso 从给定的 URL 下载、缓存和显示图像。
在 mainActivity 中,我有一个 Gridview,其中加载了图像。
并且在 Activity两个中我有显示所选图像的 Imageview 但问题是图像加载非常非常慢(例如 300Kb 图像在 10 秒内加载)。
如何使图片加载速度更快?
这是我的代码:
MainActivity.Java
public class 主要Activity 扩展 Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, ActivityTwo.class);
intent.putExtra("position", position);
startActivity(intent);
}
});
}
// our custom adapter
private class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context context) {
mContext = context;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
ImageView imageView;
// check to see if we have a view
if (convertView == null) {
// no view - so create a new one
imageView = new ImageView(mContext);
} else {
// use the recycled view object
imageView = (ImageView) convertView;
}
// Picasso.with(MainActivity.this).setDebugging(true);
Picasso.with(MainActivity.this)
.load(mThumbIds[position])
.placeholder(R.raw.place_holder)
.error(R.raw.big_problem)
.noFade().resize(250, 250)
.into(imageView);
return imageView;
}
}
static String[] mThumbIds = {
//My Links Here
};
}
试试 Glide 库。它加载图像的速度比 Picasso 库快。有关详细信息,请参阅此 link. 要包含的库
dependencies {
compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.android.support:support-v4:22.0.0'
}
使用它来加载图像:
Glide.with(context)
.load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")
.into(ivImg);