创建三个简单的fragment页面之后,将fragment对象添加到viewPager中,使其可以进行左右滑动的功能
package com.bw.hday5;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
public class YActivity extends AppCompatActivity {
private ViewPager mVp2;
private List<Fragment> list;
private Fragment3 fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_y);
mVp2 = findViewById(R.id.vp2);
list=new ArrayList<>();
fragment3=new Fragment3();
list.add(new Fragment1());
list.add(new Fragment2());
list.add(fragment3);
MyPageAdapter2 myPageAdapter2 = new MyPageAdapter2(getSupportFragmentManager(),list);
mVp2.setAdapter(myPageAdapter2);
mVp2.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position==list.size()-1){
fragment3.handler.sendEmptyMessage(110);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
其中需要给viewPager添加滑动事件,当滑动到最后一页时,发送通知给最后一页的handler中,通知其进行倒计时操作
package com.bw.hday5;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import java.util.Timer;
import java.util.TimerTask;
/**
* A simple {@link Fragment} subclass.
*/
public class Fragment3 extends Fragment {
private TextView time1;
private Timer timer;
private int time=3;
private Button button;
public Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what == 110){
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(120);
}
},0,1000);
}else if(msg.what==120){
time--;
time1.setText("倒计时:"+time+"秒");
if (time==0){
timer.cancel();
Intent intent=new Intent(getActivity(),MainActivity.class);
startActivity(intent);
getActivity().finish();
}
}
}
};
public Fragment3() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_fragment3, container, false);
time1=inflate.findViewById(R.id.time1);
button=inflate.findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳转
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
}
});
return inflate;
}
}
获取了来自activity中的信息,handler开始更新页面ui倒计时的功能,另一个按钮控件则忽略倒计时直接进行页面跳转,当其中一个效果触发之后,销毁当前页面进入主页面
至于适配器,太过简单不写也罢。