简体   繁体   English

如何将viewpager图像设置为墙纸

[英]how to set viewpager image as wallpaper

I am swiping gridview images in viewpager and I want to set viewpager current showing images as wallpaper. 我要在viewpager中滑动gridview图像,并且要将当前显示图像的viewpager设置为墙纸。 I tried this: but got error "unfortunately stopped" 我尝试了此操作:但收到错误“不幸停止”

// set wallpaper on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                WallpaperManager myWallpaperManager = WallpaperManager
                        .getInstance(getApplicationContext());
                try {
                    myWallpaperManager.setResource(R.id.view_pager);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });

full code: 完整代码:

SwipeActivity.java SwipeActivity.java

package com.td.gridview;

import java.io.IOException;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class SwipeActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_view);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        final int position = i.getExtras().getInt("id");

        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position); 

        // send image to full_view.xml screen on button click
        Button b = (Button) findViewById(R.id.xoom);
        b.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // // TODO Auto-generated method stub

                // get intent data
                Intent i3 = getIntent();

                // Selected image id
                int position = i3.getExtras().getInt("id");
                // Sending image id to FullScreenActivity
                Intent i2 = new Intent(getApplicationContext(), Full_Zoom.class);
                // passing array index
                i2.putExtra("id", position);
                startActivity(i2);
            }
        });
        //

        // set wallpaper on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                WallpaperManager myWallpaperManager = WallpaperManager
                        .getInstance(getApplicationContext());
                try {
                    myWallpaperManager.setResource(R.id.view_pager);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });
    }

    public class ImagePagerAdapter extends PagerAdapter {
        int[] icons = MainActivity.ICONS;

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

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SwipeActivity.this;
            ImageView imageView = new ImageView(context);
            // int padding = context.getResources().getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(icons[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

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

And I'm failed to find any way to set viewpager image as wallpaper so please help me here. 而且我找不到任何将viewpager图像设置为墙纸的方法,因此请在这里帮助我。

Answers will be help full so try to give answer not just pass me to other links. 答案将是有帮助的,因此,尝试给出答案不仅要将我带到其他链接。

you need to get the position of the current selected page/image. 您需要获取当前所选页面/图像的位置。 you can get it by making a custom OnPageChangeListener like this: 您可以通过创建自定义OnPageChangeListener来获得它,如下所示:

public class MyOnPageChangeListener extends OnPageChangeListener {

    private int currentPosition = 0;

    @Override
    public void onPageSelected(int position) {
        currentPosition = position;
    }

    public final int getCurrentPosition () {
        return currentPosition ;
    }
}

Copy this class into your SwipeActivity . 将此类复制到您的SwipeActivity Then create a MyOnPageChangeListener object and set it on the viewPager: 然后创建一个MyOnPageChangeListener对象并将其设置在viewPager上:

...
// create MyOnPageChangeListener
final MyOnPageChangeListener mListener = new MyOnPageChangeListener();
...
// set MyOnPageListener on the viewPager
viewPager.setOnPageChangeListener(mListener);
...

If you need the current Position you just have to call getCurrentPosition 如果您需要当前位置,则只需调用getCurrentPosition

mListener.getCurrentPosition();

fe: fe:

b1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v2) {

        WallpaperManager myWallpaperManager = WallpaperManager
                   .getInstance(getApplicationContext());
        try {
            myWallpaperManager.setResource(icons[mListener.getCurrentPosition()]);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
});

i got my answer 我得到了我的答案

package com.td.gridview;

import java.io.IOException;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class SwipeActivity extends Activity {

    protected int curruntPosition;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_view);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        final int position = i.getExtras().getInt("id");

        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                // Here you can set the wallpaper
                curruntPosition = arg0;

            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

        });

        // set wallpaper on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                //

                //

                WallpaperManager myWallpaperManager = WallpaperManager
                        .getInstance(getApplicationContext());
                try {
                    myWallpaperManager
                            .setResource(MainActivity.ICONS[curruntPosition]);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });

    }

    //

    //

    public class ImagePagerAdapter extends PagerAdapter {
        int[] icons = MainActivity.ICONS;

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

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SwipeActivity.this;
            ImageView imageView = new ImageView(context);
            // int padding = context.getResources().getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(icons[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

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

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM