Java 在片段之间滑动时如何显示进度?
我有一个带有寻呼机适配器的活动,其中包含一些片段。我还在活动顶部创建了一个进度条(水平)。我需要的是,当我在片段中滑动时,条会显示进度。例如,当我在第一个片段中时,它应该是灰色的,然后当我在片段中滑动时,它逐渐变大,当我在最后一个片段中时,它应该是完全绿色的 mainActivity.javaJava 在片段之间滑动时如何显示进度?,java,android,android-fragments,android-progressbar,Java,Android,Android Fragments,Android Progressbar,我有一个带有寻呼机适配器的活动,其中包含一些片段。我还在活动顶部创建了一个进度条(水平)。我需要的是,当我在片段中滑动时,条会显示进度。例如,当我在第一个片段中时,它应该是灰色的,然后当我在片段中滑动时,它逐渐变大,当我在最后一个片段中时,它应该是完全绿色的 mainActivity.java public class testActivity extends FragmentActivity { @Override protected void onCreate(Bundle
public class testActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pager_adapter);
initialisePaging();
}
private void initialisePaging() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,fragment1.class.getName()));
fragments.add(Fragment.instantiate(this,fragment2.class.getName()));
fragments.add(Fragment.instantiate(this,fragment3.class.getName()));
PagerAdapter mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(mPagerAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_test, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
public class PagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int arg0) {
return this.fragments.get(arg0);
}
@Override
public int getCount() {
return this.fragments.size();
}
public void setFragments(List<Fragment> fragments) {
this.fragments = fragments;
}
}
公共类测试活动扩展了碎片活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u pager\u适配器);
初始化分页();
}
私有void initialisePaging(){
列表片段=新向量();
add(Fragment.instantiate(这是fragment1.class.getName());
add(Fragment.instantiate(这是fragment2.class.getName());
add(Fragment.instantiate(这是fragment3.class.getName());
PagerAdapter MPAGeraAdapter=新的PagerAdapter(this.getSupportFragmentManager(),fragments);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
寻呼机设置适配器(mPagerAdapter);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u测试,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
PagerAdapter.java
public class testActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pager_adapter);
initialisePaging();
}
private void initialisePaging() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,fragment1.class.getName()));
fragments.add(Fragment.instantiate(this,fragment2.class.getName()));
fragments.add(Fragment.instantiate(this,fragment3.class.getName()));
PagerAdapter mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(mPagerAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_test, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
public class PagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int arg0) {
return this.fragments.get(arg0);
}
@Override
public int getCount() {
return this.fragments.size();
}
public void setFragments(List<Fragment> fragments) {
this.fragments = fragments;
}
}
公共类PagerAdapter扩展了FragmentPagerAdapter{
私有列表片段;
公共页面编辑器(碎片管理器fm,列出碎片){
超级(fm);
this.fragments=片段;
}
@凌驾
公共片段getItem(int arg0){
返回此.fragments.get(arg0);
}
@凌驾
public int getCount(){
返回此.fragments.size();
}
公共void setFragments(列出片段){
this.fragments=片段;
}
}
您需要将OnPageChangeListener
添加到您的ViewPager
活动中,如下所示
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int pos) {
// Update the progress bar according to pos
// Also note that you reach the end when pos == mPagerAdapter.getCount() - 1
// and that pos starts at 0 - this is the first fragment
}
});
事实上,我找到了一个非常简单的答案。这就是我所做的:
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int pos) {
//This is because progress is 0 at the start of the program
progress++;
ProgressBar progress = (ProgressBar) findViewById(R.id.progressBar);
progress.setProgress(position++);
}
});
onPageSelected之后我应该写什么?您应该更改进度条的颜色。制作一个int colors或color res id数组,获取位置的颜色,并将其设置为peogress栏。你能做到吗?不太可能。但我会努力的。