【问题标题】:How add image, showing in PagerView, to background?如何将显示在 PagerView 中的图像添加到背景?
【发布时间】:2012-07-08 22:19:41
【问题描述】:

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

谢谢。

【问题讨论】:

  • 您是想将图像添加到应用的背景,还是添加到 android 的壁纸中?

标签: android image background wallpaper


【解决方案1】:

您可以通过这种方式设置背景图片。这可能更容易。 代码:

((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/

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多