如何将在PagerView中显示的图像添加到背景中?

时间:2012-07-08 22:19:42

标签: android image background wallpaper

有必要下载图像(在SD卡上)然后才使用它吗?  如果不是,这是怎么做的?  我在PagerView中有图像存储和图像显示(图像从互联网加载)。我需要从PagerView中选择一张图片并将其放在背景上(壁纸)。     我无法在ImagePagerActivity中添加按钮以将图像添加到背景中。 错误:E / AndroidRuntime(14608):java.lang.RuntimeException:无法启动活动ComponentInfo {down.load.ascetix / down.load.ascetix.ImagePagerActivity}:java.lang.ClassCastException:down.load.ascetix.ImagePagerActivity。


ImagePagerActivity:


public class ImagePagerActivity  extends BaseActivity  {
    private ViewPager pager;
    private DisplayImageOptions options;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ac_image_pager);


        Bundle bundle = getIntent().getExtras();
        String[] imageUrls = bundle.getStringArray(Extra.IMAGES);
        int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0);
        options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.image_for_empty_url)
            .cacheOnDisc()
            .imageScaleType(ImageScaleType.EXACT)
            .build();
        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ImagePagerAdapter(imageUrls));
        pager.setCurrentItem(pagerPosition);

            }
    @Override
    protected void onStop() {
        imageLoader.stop();
        super.onStop();
    }
    private class ImagePagerAdapter extends PagerAdapter {
        private String[] images;
        private LayoutInflater inflater;

        ImagePagerAdapter(String[] images) {
            this.images = images;
            inflater = getLayoutInflater();
        }

        public void destroyItem(View container, int position, Object object) {
            ((ViewPager) container).removeView((View) object);
        }

        public void finishUpdate(View container) {
        }

        public int getCount() {
            return images.length;
        }

        public Object instantiateItem(View view, int position) {
            final FrameLayout imageLayout = (FrameLayout) inflater.inflate(R.layout.item_pager_image, null);
            final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
            final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);
            imageLoader.displayImage(images[position], imageView, options, new ImageLoadingListener() {

                public void onLoadingStarted() {
                    spinner.setVisibility(View.VISIBLE);
                }

                public void onLoadingFailed(FailReason failReason) {
                    String message = null;
                    switch (failReason) {
                        case IO_ERROR:
                            message = "Input/Output error";
                            break;
                        case OUT_OF_MEMORY:
                            message = "Out Of Memory error";
                            break;
                        case UNKNOWN:
                            message = "Unknown error";
                            break;
                    }
                    Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();
                    spinner.setVisibility(View.GONE);
                    imageView.setImageResource(android.R.drawable.ic_delete);
                }

                public void onLoadingComplete() {
                    spinner.setVisibility(View.GONE);
                    Animation anim = AnimationUtils.loadAnimation(ImagePagerActivity.this, R.anim.fade_in);
                    imageView.setAnimation(anim);
                    anim.start();
                }

                public void onLoadingCancelled() {
                    // Do nothing
                }
            });
            ((ViewPager) view).addView(imageLayout, 0);
            return imageLayout;
        }

        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }

        public void restoreState(Parcelable state, ClassLoader loader) {
        }

        public Parcelable saveState() {
            return null;
        }

        public void startUpdate(View container) {
        }
    }
}

我的.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:padding="1dip">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:adjustViewBounds="true" />

    <ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone" />

</FrameLayout>

感谢。

1 个答案:

答案 0 :(得分:0)

您可以这样设置背景图片。这可能更容易。 守则:

((ImageView)findViewById(R.id.background)).setBackgroundResource(R.drawable.<your image>);

XML:

  <ImageView android:id="@+id/background"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

设置背景请看一下: http://www.edumobile.org/android/android-beginner-tutorials/setting-an-image-as-a-wallpaper/