Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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/url/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
Android 使用URL源而不是SD卡加载图像_Android_Url_Imageview_Touch_Zooming - Fatal编程技术网

Android 使用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&

我正在开发一个图库应用程序,我找到了这个教程

这些项目作为一个画廊应用程序运行,显示图像和滑动、缩小和收缩功能

正如您在项目中看到的,图像是从sd卡加载的。我有一个指向图像的url,我想从这个url加载图像,而不是使用sd卡

所有的建议都会有帮助。多谢各位


我编辑了这个问题。

要从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>