2017-04-19 100 views
-1

我使用的是viewpager(含图片)和viewpager我已经设置类似,当用户启动他可以看到最后看到的页面,当他退出活动的活动的共享偏好...搜索栏共享偏好

viewpager的共享引用对我来说工作得很好。我正在使用seekbar在viewpager中滑动图像,但是如何在搜索栏中使用相同的共享首选项 将seekbar的位置更新为上次显示的页面或点。 或如果用户在viewpager上滑动图像,我如何自动更新seekbar的进度。我在Android领域是新的,这是我的第一篇文章。请帮助我的人了..

我的代码:

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 

}

回答

1

您可以将addOnPageChangeListener添加到您的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) { 

     } 
    });