0

有必要下载图像(在 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。


ImagePager活动:


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>

谢谢。

4

1 回答 1

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/

于 2012-07-08T22:30:41.490 回答