2017-04-19 102 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) { 

     } 
    });