0

Edited code after following this link ...Set wallpaper from ViewPager .I developed simple viewpager app along with the background music. However, I want to modify my app so that image chosen by user will give them option to set as wallpaper....I don't want to implement any buttons in my app. User should be able to just touch the image , which will give them option to set as wallpaper...

I am getting error at this code curruntPosition=arg0;. It says "Current position cannot be resolve to a variable". I don't know what it mean ...

Following are my codes...

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

I just start with programming, so please give some explanations, or it will be great if you provide some codes .

Community
  • 1
  • 1
biggboss2019
  • 220
  • 3
  • 8
  • 30

1 Answers1

0

First add this Permission to the Manifest

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

Now for some code.

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

}

});

Explantion : This will set that the Image will be clickable , when the image is clicked it will set the phone Wallpaper with the selected drawable.

getApplicationContext() 

is the Context from the Activity. This changes will take place inside the Adapter.

Activity add this variable

int currentPosition;
Itzik Samara
  • 2,278
  • 1
  • 14
  • 18