Hec*_*tor 20 android uiviewanimation android-viewpager
我有一个Android应用程序,它使用带有两个页面的ViewPager当活动首次显示时,我想依次向用户呈现每个页面,以便他们知道他们可以在两个视图之间滑动.我没有找到任何描述如何执行此操作的文档.我发现PageTransformations听起来很有希望,但用户必须先刷卡.只要ViewPager中的第一页显示,我就需要自动滚动两页.怎样才能达到预期的效果?
Sha*_*zal 62
你可以用它Timer来达到这个目的.以下代码是自解释的:
// ---------------------------------------------------------------------------
Timer timer;
int page = 1;
public void pageSwitcher(int seconds) {
timer = new Timer(); // At this line a new Thread will be created
timer.scheduleAtFixedRate(new RemindTask(), 0, seconds * 1000); // delay
// in
// milliseconds
}
// this is an inner class...
class RemindTask extends TimerTask {
@Override
public void run() {
// As the TimerTask run on a seprate thread from UI thread we have
// to call runOnUiThread to do work on UI thread.
runOnUiThread(new Runnable() {
public void run() {
if (page > 4) { // In my case the number of pages are 5
timer.cancel();
// Showing a toast for just testing purpose
Toast.makeText(getApplicationContext(), "Timer stoped",
Toast.LENGTH_LONG).show();
} else {
mViewPager.setCurrentItem(page++);
}
}
});
}
}
// ---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
注意1:确保pageSwitcher在设置adapter到活动的viewPager正确内部onCreate方法后调用方法.
注2:本viewPager会刷卡每次启动它的时间.你必须处理它,以便它只浏览所有页面一次(当用户viewPager第一次查看时)
注3:如果您想进一步减慢滚动速度viewPager,可以在StackOverflow上按照这个答案.
如果那对你有帮助,请在评论中告诉我......
Luc*_*eto 33
问题是陈旧但我希望它可以帮助某人使用Runnable我的解决方案
简短的回答
Runnable runnable = new Runnable() {
public void run() {
if (myAdapter.getCount() == page) {
page = 0;
} else {
page++;
}
viewPager.setCurrentItem(page, true);
handler.postDelayed(this, delay);
}
};
Run Code Online (Sandbox Code Playgroud)
长答案 在活动中使用
public class activity extends AppCompatActivity {
private Handler handler;
private int delay = 5000; //milliseconds
private ViewPager viewPager;
private int page = 0;
private MyAdapter myAdapter;
Runnable runnable = new Runnable() {
public void run() {
if (myAdapter.getCount() == page) {
page = 0;
} else {
page++;
}
viewPager.setCurrentItem(page, true);
handler.postDelayed(this, delay);
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new Handler();
viewPager = (ViewPager) findViewById(R.id.viewPager);
myAdapter = new MyAdapter(getSupportFragmentManager());
viewPager.setAdapter(myAdapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
page = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
protected void onResume() {
super.onResume();
handler.postDelayed(runnable, delay);
}
@Override
protected void onPause() {
super.onPause();
handler.removeCallbacks(runnable);
}
}
Run Code Online (Sandbox Code Playgroud)
Tri*_*nea 13
我在github上创建了一个开源项目,它实现了一个自动滚动ViewPager,示例图如下:

使用
<cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
更换
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
打电话
startAutoScroll()开始自动滚动.
stopAutoScroll() 停止自动滚动.
更多:https://github.com/Trinea/android-auto-scroll-view-pager
| 归档时间: |
|
| 查看次数: |
50314 次 |
| 最近记录: |