如何在viewpager应用程序中将图像设置为墙纸?

时间:2014-08-24 20:46:51

标签: java android android-viewpager gallery

关注此链接后编辑的代码... Set wallpaper from ViewPager。我开发了简单的viewpager应用程序以及背景音乐。但是,我想修改我的应用程序,以便用户选择的图像将为他们提供设置为壁纸的选项....我不想在我的应用程序中实现任何按钮。用户应该只需触摸图像,这将为他们提供设置为壁纸的选项...

我在此代码中遇到错误curruntPosition = arg0;。它说“当前位置不能解析为变量”。我不知道它是什么意思......

以下是我的代码......

Mainactivity.java

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ShareActionProvider;




public class MainActivity extends Activity {

 MediaPlayer oursong;
 ViewPager viewPager;

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
   oursong = MediaPlayer.create(MainActivity.this, R.raw.a);
   oursong.start ();

 viewPager = (ViewPager) findViewById(R.id.view_pager);
 ImageAdapter adapter = new ImageAdapter(this);
 viewPager.setAdapter(adapter);

 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

     }
 });

}

private ShareActionProvider mShareActionProvider;


@Override
public boolean onCreateOptionsMenu(Menu menu) {
   // Inflate menu resource file.
   getMenuInflater().inflate(R.menu.activity_main, menu);

   // Locate MenuItem with ShareActionProvider
   MenuItem item = menu.findItem(R.id.menu_item_share);

   // Fetch and store ShareActionProvider
   mShareActionProvider = (ShareActionProvider) item.getActionProvider();

   // Return true to display menu
   return true;
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
   if (mShareActionProvider != null) {
       mShareActionProvider.setShareIntent(shareIntent);
   }
}

  @Override
  protected void onPause(){
  super.onPause();
   oursong.release();
   oursong = null;
}

}

imageadapter.java

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImageAdapter extends PagerAdapter {
    Context context;
    private int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.FIT_XY);
      imageView.setImageResource(GalImages[position]);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

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

我刚开始编程,所以请提供一些解释,或者如果你提供一些代码就会很棒。

1 个答案:

答案 0 :(得分:0)

首先将此权限添加到清单

<uses-permission android:name="android.permission.SET_WALLPAPER">

现在有些代码。

imageview.setOnClickListener(new View.OnClickListener() {

 public void onClick(View view) {

     WallpaperManager myWallpaperManager 
        = WallpaperManager.getInstance(context);
        try {
            myWallpaperManager.setResource(GalImages[position]);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       

}

});

说明:这将设置图像可以点击,单击图像时,它将使用所选的drawable设置手机壁纸。

getApplicationContext() 

是来自Activity的Context。 此更改将在适配器内进行。

<强>活动 添加此变量

int currentPosition;