我正在尝试在Android API 16中实现以下功能: 我希望能够刷过2个屏幕,之后我有一个活动,登录,开始。目前,登录活动显示一个祝酒词 屏幕1 - >屏幕2 - >开始活动(例如登录/注册屏幕)
我已经使用了片段以及ViewPager,并设法从屏幕1滑动到屏幕2.然而,我陷入了如何超越这个目标。
我使用了意图来启动活动。但是这会导致过渡屏幕1 - > 2没有显示,但我确实从登录屏幕获取了Toast消息。我不知道在哪里放置意图或者我是以正确的方式这样做。
我该如何处理?欢迎任何想法或建议。
答案 0 :(得分:1)
创建另一个将成为第三个的片段并使用以下代码:
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==2)
{
//call activity
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
答案 1 :(得分:1)
首先创建一个包含3个片段的视图寻呼机,但第三个片段永远不会明显到达。然后,在包含视图寻呼机的活动中,实现以下侦听器。
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position == 2){
// Create the intent to launch the login screen.
Intent intent = new Intent(mActivity.this, mLoginActivity.this);
startActivity(intent);
}
}
@Override
public void onPageSelected(int position) {
// If your view pager has tabs you will need to create the intent here as well.
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
答案 2 :(得分:0)
请使用以下自定义类替代视图寻呼机
import android.content.Context;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class CustomViewPager extends ViewPager {
float mStartDragX;
OnSwipeOutListener mListener;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setOnSwipeOutListener(OnSwipeOutListener listener) {
mListener = listener;
}
@Override
public boolean onTouchEvent(MotionEvent ev){
if(getCurrentItem()==getAdapter().getCount()-1){
final int action = ev.getAction();
float x = ev.getX();
switch(action & MotionEventCompat.ACTION_MASK){
case MotionEvent.ACTION_DOWN:
mStartDragX = x;
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
if (x<mStartDragX){
mListener.onSwipeOutAtEnd();
}else{
mStartDragX = 0;
}
break;
}
}else{
mStartDragX=0;
}
return super.onTouchEvent(ev);
}
public interface OnSwipeOutListener {
public void onSwipeOutAtEnd();
}
}
然后在视图中创建自定义类将Viewpager替换为Custome ViewPager,如下所示
<com.examples.activity.CustomViewPager android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/rcTemp"
android:layout_alignLeft="@+id/rcTemp"
android:layout_alignRight="@+id/rcTemp"
android:layout_alignTop="@id/rcTemp"
android:layout_below="@+id/rcTemp" />
并在您的代码中初始化为CustomeviewPager并覆盖方法onSwipeOutListener(),如下所示
mPager = (CustomViewPager) findViewById(R.id.pager);
mPager.setOnSwipeOutListener(new CustomViewPager.OnSwipeOutListener() {
@Override
public void onSwipeOutAtEnd() {
Log.d("callledby me","yes");
}
});
答案 3 :(得分:0)