Android 使用URL源而不是SD卡加载图像
我正在开发一个图库应用程序,我找到了这个教程 这些项目作为一个画廊应用程序运行,显示图像和滑动、缩小和收缩功能 正如您在项目中看到的,图像是从sd卡加载的。我有一个指向图像的url,我想从这个url加载图像,而不是使用sd卡 所有的建议都会有帮助。多谢各位Android 使用URL源而不是SD卡加载图像,android,url,imageview,touch,zooming,Android,Url,Imageview,Touch,Zooming,我正在开发一个图库应用程序,我找到了这个教程 这些项目作为一个画廊应用程序运行,显示图像和滑动、缩小和收缩功能 正如您在项目中看到的,图像是从sd卡加载的。我有一个指向图像的url,我想从这个url加载图像,而不是使用sd卡 所有的建议都会有帮助。多谢各位 我编辑了这个问题。要从internet下载图像,请创建一个扩展为async的类,获取您的ImageView和url并返回位图: 大概是这样的: private class LoadImagefromUrl extends AsyncTask&
我编辑了这个问题。要从internet下载图像,请创建一个扩展为async的类,获取您的ImageView和url并返回位图: 大概是这样的:
private class LoadImagefromUrl extends AsyncTask< Object, Void, Bitmap > {
ImageView ivPreview = null;
@Override
protected Bitmap doInBackground( Object... params ) {
this.ivPreview = (ImageView) params[0];
String url = (String) params[1];
System.out.println(url);
return loadBitmap( url );
}
@Override
protected void onPostExecute( Bitmap result ) {
super.onPostExecute( result );
ivPreview.setImageBitmap( result );
}
}
public Bitmap loadBitmap( String url ) {
URL newurl = null;
Bitmap bitmap = null;
try {
newurl = new URL( url );
bitmap = BitmapFactory.decodeStream( newurl.openConnection( ).getInputStream( ) );
} catch ( MalformedURLException e ) {
e.printStackTrace( );
} catch ( IOException e ) {
e.printStackTrace( );
}
return bitmap;
}
您不想在下载时挂起UI
希望对你有帮助
至于集成允许收缩缩放功能的TouchImageView,请注意您的链接中包含的此类内容:
TouchImageView.java
您可以简单地创建一个类似的类,并将其包含在xml布局中,或者在java中附加。将上面对ImageView的引用替换为TouchImageView
Picasso.with(MyActivity.this).load(urlOfImage).fit().centerInside().error(R.drawable.no_img).into(touchImageView);
有关此操作的更多信息,请咨询android文档
您可以使用毕加索库将远程图像加载到TouchImageView中
Picasso.with(MyActivity.this).load(urlOfImage).fit().centerInside().error(R.drawable.no_img).into(touchImageView);
要使用毕加索库,您需要遵循build.gradle文件的依赖关系
compile 'com.squareup.picasso:picasso:2.3.3'
试试这个,希望能奏效 主要活动 图像适配器 activity_main.xml pager_item.xml
感谢您的回复,但我不知道如何将这个类与现有项目集成。你能检查一下我给你的链接并解释一些其他的步骤吗?好的,我会尝试一下,如果它有效的话,你会得到你的接受点:谢谢你,无论如何,没问题。。笔记上面的TouchImageView有原始项目的包名,您可以在那里找到包路径
compile 'com.squareup.picasso:picasso:2.3.3'
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ArrayList<String> articleList = getArticleData();
ImageAdapter adapter = new ImageAdapter(this,articleList);
viewPager.setAdapter(adapter);
}
private ArrayList<String> getArticleData() {
ArrayList<String> articleList = new ArrayList<String>(Arrays.asList(MyArticleData.articles));
return articleList;
}
}
public class MyArticleData {
static String[] articles = {
"https://api.learn2crack.com/android/images/donut.png",
"https://api.learn2crack.com/android/images/eclair.png",
"https://api.learn2crack.com/android/images/froyo.png",
----
-----
------
https://api.learn2crack.com/android/images/donut.png"
};
}
public class ImageAdapter extends PagerAdapter {
Context context;
ArrayList<String> data = new ArrayList<>();
public LayoutInflater mLayoutInflater;
View imageView;
ImageAdapter(Context context, ArrayList<String> urls) {
this.context = context;
this.data = urls;
}
@Override
public int getCount() {
return 30;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//imageView.setImageResource(GalImages[position]);
Picasso.with(context).load(data.get(position)).into(imageView);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
<LinearLayout 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"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:scaleType="centerCrop">
</ImageView>
</LinearLayout>