2017-04-19 5 views
-1

私は(画像付き)viewpagerを使用していますが、...シークバー共有好み

ビューページの共有参照は私にとってうまくいっています。私は、シークバーを使用して、ビューページの画像をスライドさせていますが、シークバーの最後の表示されたページまたはスポットに、シークバーの位置を更新するのに、同じsharedpreferences を使用できます。 、または、ユーザーがviewpager上の画像をスライダーすると、自動的にシークバーの進捗状況を更新できますか?誰かが...私を助けてください..私はアンドロイドの分野で新しいですし、これが私の最初の投稿です

私のコード:

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では、%でシークバーの進捗状況を設定することができます。

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) { 

     } 
    }); 
関連する問題