0

viewpager で gridview 画像をスワイプしていますが、viewpager に現在表示されている画像を壁紙として設定したいと考えています。私はこれを試しました:しかし、「残念ながら停止しました」というエラーが発生しました

// 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();
                }

            }
        });

完全なコード:

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);
        }
    }
}

ビューページャーの画像を壁紙として設定する方法が見つからなかったので、ここで助けてください。

回答は完全に役立つため、他のリンクに私を渡すだけでなく、回答を提供してみてください.

4

2 に答える 2

0

現在選択されているページ/画像の位置を取得する必要があります。OnPageChangeListener次のようなカスタムを作成することで取得できます。

public class MyOnPageChangeListener extends OnPageChangeListener {

    private int currentPosition = 0;

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

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

このクラスを にコピーしますSwipeActivity。次に、MyOnPageChangeListenerオブジェクトを作成し、viewPager に設定します。

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

現在の位置が必要な場合は、電話するだけですgetCurrentPosition

mListener.getCurrentPosition();

フェ:

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();
        }

    }
});
于 2014-07-09T13:19:56.977 に答える