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

내가 같이 viewpager 이미지를 설정 할 수있는 방법을 찾지 못했습니다 해요 벽지 그래서 여기 좀 도와주세요.

답변이 도움이 될 수 있으니 답장을 보내주십시오. 다른 링크로 넘어 가지 않도록하십시오.

답변

0

내가 가진를 내 대답

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

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

    } 
}); 
+0

내 코드로 답변을 편집 해 주시겠습니까? 왜냐하면 나는 그것을 구현하는 방법을 모르겠다 – user3739970

+0

나는 내 대답을 편집했습니다. 나는 그것이 당신을 지금 도울 것이라는 점을 희망한다. :디 – migos

관련 문제