在 android。如何从滑动布局设置壁纸?

on android. How to set wallpaper from swipe layout?

我有一个滑动 activity 也显示了一个小文本。我想用屏幕上看到的图像作为墙纸。

我在这个网站上学到了很多东西。你对每个人都有很大帮助。这是我第一次访问,我没有找到答案。

感谢并为我糟糕的英语感到抱歉。 这是代码

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.os.Parcelable;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;

public class SwipeImageActivity extends Activity {

public static Integer[] mImagesIds = {
        R.drawable.st1, R.drawable.st2,
        R.drawable.st3, R.drawable.st4,
        R.drawable.st5, R.drawable.st6,
        R.drawable.st7, R.drawable.st8,
        R.drawable.st9, R.drawable.st10,
        R.drawable.st11, R.drawable.st12,
        R.drawable.st13, R.drawable.st14,
        R.drawable.st15, R.drawable.st16,
        R.drawable.st17, R.drawable.st18,
        R.drawable.st10, R.drawable.st20,
        R.drawable.st21, R.drawable.st22,
        R.drawable.st23, R.drawable.st24,
};

private boolean hideSwipeText;
private String[] imagesDescriptions;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.swipe_images_layout);
    String i = getIntent().getStringExtra("position");
    int index = Integer.parseInt(i);

    imagesDescriptions = getResources().getStringArray(R.array.images_descriptions);

    SwipeImagePagerAdapter swipeNewsAdapter = new SwipeImagePagerAdapter();
    ViewPager newsPager = (ViewPager) findViewById(R.id.swipe_pager);
    newsPager.setAdapter(swipeNewsAdapter);
    newsPager.setCurrentItem(index);

    newsPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {
            ShowGalleryActivity.mSelected = i;
        }

        @Override
        public void onPageSelected(int i) {

        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
}

private class SwipeImagePagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return ShowGalleryActivity.mImagesIds.length;
    }

  @Override
    public Object instantiateItem(ViewGroup collection, int position) {

        LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View view = inflater.inflate(R.layout.show_images, null);
        LinearLayout swipeDescription = (LinearLayout) view.findViewById(R.id.swipe_description);

        if (hideSwipeText) {
            swipeDescription.setVisibility(View.GONE);
        }

        hideSwipeText = true;

        ImageView imageView = (ImageView) view.findViewById(R.id.gallery_image);

        imageView.setImageResource(mImagesIds[position]);

        TextView imageDescription = (TextView) view.findViewById(R.id.image_description);

        imageDescription.setText(imagesDescriptions[position].toString());

        collection.addView(view, 0);

        return view;
    }

    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        collection.removeView((View) view);
    }


           @Override
    public boolean isViewFromObject(View view, Object object) {
        return (view == object);
    }


    @Override
    public void finishUpdate(ViewGroup arg0) {
    }


    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void startUpdate(ViewGroup arg0) {
    }
}
}

当我写下您回复的最后一行时,出现以下错误

未处理的异常:java.io.IO.Exception wallpaperManager.setBitmap(位图);

我是这样解决的

    btn_set.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int mImageId = mImagesIds[newsPager.getCurrentItem()];

                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), mImageId);
                    WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
                    Drawable wallpaperDrawable = wallpaperManager.getDrawable();
                    try {
                        wallpaperManager.setBitmap(bitmap);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

如果按钮在轻扫布局中就可以了 谢谢尼克。

去做:

int mImageId = imagesDescriptions[newsPager.getCurrentItem()]

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),mImageId );
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
wallpaperManager.setBitmap(useThisBitmap);

更新:

将您的“ViewPager newsPager”设为Activity的字段 useThisBitmap - bitmap

 public class SwipeImageActivity extends Activity {
    ViewPager newsPager//this line added
    public static Integer[] mImagesIds = {
            R.drawable.st1, R.drawable.st2,
            R.drawable.st3, R.drawable.st4,
            R.drawable.st5, R.drawable.st6,
            R.drawable.st7, R.drawable.st8,
            R.drawable.st9, R.drawable.st10,
            R.drawable.st11, R.drawable.st12,
            R.drawable.st13, R.drawable.st14,
            R.drawable.st15, R.drawable.st16,
            R.drawable.st17, R.drawable.st18,
            R.drawable.st10, R.drawable.st20,
            R.drawable.st21, R.drawable.st22,
            R.drawable.st23, R.drawable.st24,
    };

    private boolean hideSwipeText;
    private String[] imagesDescriptions;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_images_layout);
        String i = getIntent().getStringExtra("position");
        int index = Integer.parseInt(i);

        imagesDescriptions = getResources().getStringArray(R.array.images_descriptions);

        SwipeImagePagerAdapter swipeNewsAdapter = new SwipeImagePagerAdapter();
        newsPager = (ViewPager) findViewById(R.id.swipe_pager);//this line changed
        newsPager.setAdapter(swipeNewsAdapter);
        newsPager.setCurrentItem(index);
        Button btn_set=(Button)findViewById(R.id.btn_set);//this line added and add it to layout
//---added listner
         btn_set.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int mImageId = imagesDescriptions[newsPager.getCurrentItem()];

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),mImageId );
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
Drawable wallpaperDrawable = wallpaperManager.getDrawable();
wallpaperManager.setBitmap(bitmap);
                    }
                });
//---end of added listner
        newsPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i2) {
                ShowGalleryActivity.mSelected = i;
            }

            @Override
            public void onPageSelected(int i) {

            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
    }

    private class SwipeImagePagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return ShowGalleryActivity.mImagesIds.length;
        }

      @Override
        public Object instantiateItem(ViewGroup collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View view = inflater.inflate(R.layout.show_images, null);
            LinearLayout swipeDescription = (LinearLayout) view.findViewById(R.id.swipe_description);

            if (hideSwipeText) {
                swipeDescription.setVisibility(View.GONE);
            }

            hideSwipeText = true;

            ImageView imageView = (ImageView) view.findViewById(R.id.gallery_image);

            imageView.setImageResource(mImagesIds[position]);

            TextView imageDescription = (TextView) view.findViewById(R.id.image_description);

            imageDescription.setText(imagesDescriptions[position].toString());

            collection.addView(view, 0);

            return view;
        }

        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            collection.removeView((View) view);
        }


               @Override
        public boolean isViewFromObject(View view, Object object) {
            return (view == object);
        }


        @Override
        public void finishUpdate(ViewGroup arg0) {
        }


        @Override
        public void restoreState(Parcelable arg0, ClassLoader arg1) {
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

        @Override
        public void startUpdate(ViewGroup arg0) {
        }
    }
    }