2017-04-19 5 views
-1

내가 (이미지)을 viewpager를 이용하고 있고 ...SeekBar를 공유 환경 설정

viewpager의 공유 참조가 나를 위해 잘 작동합니다. seekbar를 사용하여 뷰어에서 이미지를 슬라이드하는 방법을 사용하지만 어떻게 seekbar의 동일한 sharedpreferences 을 사용하여 seekbar의 위치를 ​​마지막으로 본 페이지 또는 지점으로 업데이트 할 수 있습니까? 또는 사용자가 뷰 페이지에서 이미지를 슬라이더로 움직일 경우 seekbar의 진행 상황을 자동으로 업데이트 할 수 있습니까? 사람이 .. 날 좀 도와주세요 ... 난 안드로이드의 분야에서 새로운 오전이 내 첫 번째 게시물입니다

내 코드 :

public static ViewPager viewPager; 
Customswipeadapter adapter; 
public static int a; 
public static int idName; 
private SeekBar seekBar; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewpager); 
    adapter = new Customswipeadapter(this); 
    viewPager = (ViewPager) findViewById(R.id.viewpager); 

    seekBar = (SeekBar) findViewById(R.id.seekBar); 


    viewPager.setAdapter(adapter); 
    viewPager.setPageTransformer(true, new RotateDownTransformer()); 
    viewPager.setCurrentItem(images_resources.length); 
    a = viewPager.getCurrentItem(); 

    ////SHARED PREFERENCES/// 
    android.content.SharedPreferences prefs = getSharedPreferences("page_store", MODE_PRIVATE); 
    idName = prefs.getInt("Page_number", 0); //0 is the default value. 
    Toast.makeText(this, " Name"+idName , Toast.LENGTH_SHORT).show(); 
    if (idName != 0) { 
     viewPager.setCurrentItem(idName); 
     //Toast.makeText(viewpager.this,"Page no:"+ idName, Toast.LENGTH_LONG).show(); 
    } else { 
     //Toast.makeText(this, "Null", Toast.LENGTH_SHORT).show(); 
    } 

    //Seekbar start 


    seekBar.setOnSeekBarChangeListener(
      new SeekBar.OnSeekBarChangeListener() { 
       int progress = 0; 
       @Override 
       public void onProgressChanged(SeekBar seekBar, 
               int progresValue, boolean fromUser) { 
        progress = images_resources.length-progresValue; 
        viewPager.setCurrentItem(progress); 

       } 

       @Override 
       public void onStartTrackingTouch(SeekBar seekBar) { 
        // Do something here, 
        //if you want to do anything at the start of 
        // touching the seekbar 
        progress = seekBar.getProgress(); 

       } 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 
        // Display the value in textview 
        //textView.setText(progress + "/" + seekBar.getMax()); 

       } 
      }); 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; 
    //this adds items to the action bar if it is present. 
    // getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} ///Seekbar End 


    //BACK PRESS METHOD 
@Override 
public void onBackPressed() { 
    a = viewPager.getCurrentItem(); 
    SharedPreferences.Editor editor = getSharedPreferences("page_store", MODE_PRIVATE).edit(); 
    editor.putInt("Page_number", a); 
    //Toast.makeText(this, " "+a , Toast.LENGTH_SHORT).show(); 
    editor.commit(); 
    finish(); 
} 
//END OF SHARED PREFERENCES 

} 당신은에 addOnPageChangeListener을 추가 할 수 있습니다

답변

1

당신의 viewPager와 그의 메소드를 구현하면 onPageSelected에서 %에서 seekbar의 진행을 설정할 수 있습니다.

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 

      seekbar.setProgress((position * 100)/viewPager.getChildCount()); 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    });