如何将URL中的图像加载到viewpager中

时间:2015-02-03 09:42:21

标签: android bitmap android-viewpager

我已经在互联网上搜索了这个问题,我找不到任何好的东西。 我确实在Android Developer网站上看了他们 将图像从URL加载到ImageView中。

这是我的代码:

Openfactsscreen活动:

public class Openfactsscreen extends Activity {




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_openfactsscreen); 

        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImageAdapter adapter = new ImageAdapter(this);
        viewPager.setAdapter(adapter);
        }

        public void openmenu(View view){
        Intent intent = new Intent(this, SendFact.class);
        startActivity(intent); }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.openfactsscreen, menu);
        return true;
 }

}

ImageAdapter.java:

public class ImageAdapter extends PagerAdapter {

        Context context;
        private int[] GalImages = new int[] {
        R.drawable.factcard2,
        R.drawable.factcard8,
        R.drawable.factcard4
        };



        ImageAdapter(Context context){
        this.context=context;
        }
        @Override
        public int getCount() {
        return GalImages.length;
        }

        @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]);
        ((ViewPager) container).addView(imageView, 0);
        return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
        }


}

activity_openfactsscreen:

    <RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/backgroundotheractivities" >

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/imageView1" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/factsscreen_layout" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="18dp"
        android:background="@drawable/emailbutton"
        android:onClick="openmenu" />

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imageButton1"
        android:layout_toRightOf="@+id/imageButton1"
        android:background="@drawable/informationbutton" />

</RelativeLayout>

一切正常,如果有人知道一个好的网站可以查看,或者有人想帮助我那会很棒!

无论如何,谢谢你的时间,祝你有个美好的一天!

2 个答案:

答案 0 :(得分:6)

在班级

的末尾加上这个
public class ImageAdapter extends PagerAdapter {

        Context context;
        private int[] GalImages = new int[] {
        R.drawable.factcard2,
        R.drawable.factcard8,
        R.drawable.factcard4
        };



        ImageAdapter(Context context){
        this.context=context;
        }
        @Override
        public int getCount() {
        return GalImages.length;
        }

        @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]);

        new LoadImage(imageView).execute("Your URL");

        ((ViewPager) container).addView(imageView, 0);
        return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
        }



     private class LoadImage extends AsyncTask<String, String, Bitmap> {
            ImageView img=null;
            public LoadImage(ImageView img){
                this.img=img;
            }
            @Override
            protected void onPreExecute() {
                super.onPreExecute();

            }
            protected Bitmap doInBackground(String... args) {
                Bitmap bitmap=null;
                try {
                    bitmap = BitmapFactory.decodeStream((InputStream)new URL(args[0]).getContent());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return bitmap;
            }
            protected void onPostExecute(Bitmap image) {
                if(image != null){
                    img.setImageBitmap(image);
                }
            }
        }`
     } 

答案 1 :(得分:0)

您可以尝试这个简单的代码:

    URL url = new URL("yourURL");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);

否则你可以看一下answer

你也可以试试这个:

 try {
  ImageView i = (ImageView)findViewById(R.id.image);
  Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(URL).getContent());
  i.setImageBitmap(bitmap); 
} catch (MalformedURLException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}