2012-12-02 4 views
1

swype으로 이미지를 변경하는 ViewPager가 있습니다. 이제 사용자가 배경 화면으로보고있는 현재 이미지를 설정할 버튼을 만들고 싶습니다. onPageSelected 또는 이와 유사한 작업을 수행하는 방법은 무엇입니까?ViewPager에서 배경 화면 설정

코드 : 전에 사용하지만, ViewPager 지금 그것을 구현하는 방법을 모른다

package com.example.app; 

import java.io.IOException; 
import android.app.Activity; 
import android.app.WallpaperManager; 
import android.content.Context; 
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.view.Window; 
import android.view.animation.AnimationUtils; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.ImageSwitcher; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.widget.ViewSwitcher; 
import android.view.View.OnClickListener; 
import android.widget.ViewSwitcher.ViewFactory; 

public class MainActivity extends Activity { 


     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_main); 


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

     } 

      private class ImagePagerAdapter extends PagerAdapter { 
      private int[] mImages = new int[] { 
       R.drawable.image1, 
       R.drawable.image2, 
       R.drawable.image3, 
       R.drawable.image4 

      }; 


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

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

      @Override 
      public Object instantiateItem(ViewGroup container, final int position) { 
       Context context = MainActivity.this; 
       ImageView imageView = new ImageView(context); 
       int padding = context.getResources().getDimensionPixelSize(
        R.dimen.padding_medium); 
       imageView.setPadding(padding, padding, padding, padding); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
       imageView.setImageResource(mImages[position]); 
       ((ViewPager) container).addView(imageView, 0); 
       return imageView; 
      } 


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

버튼 코드 : 당신처럼 사용할 수 있습니다

Button button = (Button) this.findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());    
           try { 
       myWallpaperManager.setResource(mImages[position]); 
         Toast.makeText(MainActivity.this, "Wallpaper ok!", Toast.LENGTH_SHORT).show(); 
       } catch (IOException e) { 
        Toast.makeText(MainActivity.this, "Wallpaper error!", Toast.LENGTH_SHORT).show(); 
        } 
      } 
     }); 

답변

1

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 

     } 
    }); 

그 다음에

0과 선언 내가 게시 당신이 코드에 쓴이를 구현하는 방법을 잘 첩 아니에요 전역 변수

int curruntPosition=0; 
+0

잊지 마세요. 올바른 위치에 코드를 붙여 넣으면 고맙겠습니다. 미리 감사드립니다! –

+0

위의 코드를'viewPager.setAdapter (adapter);라고 써주세요. 정말로 프로그래머입니까? 그것은 당신의 이름처럼 간단합니다 :) –

+0

고마워요. 유일한 문제는 onClick 메서드가 onPageSelected 내부에서 작동하므로 작동하지 않는다는 것입니다. –