Android ViewPager引导页和GifView动态图片加载库的简单使用

前言:

ViewPager,视图翻页工具,提供了多页面切换的效果,ViewPager使用起来就是我们通过创建适配器给它填充多个视图,左右滑动时,切换不同的view.Google官方是建议我们使用片段来填充ViewPager的,这样可以更加方便的生成每个页面,以及管理每个页面的生命周期。

查看层布局:

欢迎页面:activity_welcome.xml




    

安装后引导页面:activity_guide.xml




    

    

    
        
        
        
    

引导页面三个VIE页面:

one_view.xml




    

two_view.xml




    

three_view.xml




    

    

主页面:activity_main.xml中        添加GIFView.jar包




    

控制层的Java代码:

  WelcomeActivity.java

public class WelcomeActivity extends AppCompatActivity {

    private boolean isFirstIn=false;//判定是否是第一次打开
    private static final int TIME=2000;//声明延时的时间
    private static final int GO_HOME=1000;//跳转到Main2Activity的时间
    private static final int GO_GUIDE=1001;//跳转到MainActivity的时间

    //线程分为主线程(主线程又叫UI线程,只能有一个主线程)和子线程(可以有多个)Handler只能在主线程里运行
    //handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,我们可以发消息,也可以通过它处理消息。
    //使用Handler的方式进行延时操作
    @SuppressLint("HandlerLeak")
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case GO_HOME:
                    goHome();
                    break;
                case GO_GUIDE:
                    goGuide();
                    break;
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        init();
    }
    private void init(){
        //获取SharedPreferenced对象,用以存储isFirstIn的当前值
        SharedPreferences preferences=getSharedPreferences("jike",MODE_PRIVATE);
        isFirstIn=preferences.getBoolean("isFirstIn",true);//将isFirstIn获取为true
        if (!isFirstIn){
            handler.sendEmptyMessageDelayed(GO_HOME,TIME);//发送消息
        }else {
            handler.sendEmptyMessageDelayed(GO_GUIDE,TIME);
            SharedPreferences.Editor editor=preferences.edit();//对存储数据进行编辑
            editor.putBoolean("isFirstIn",false);//将isFirstIn存储为false
            editor.commit();//编辑提交
        }
    }
    private void goHome(){
        Intent intent=new Intent(WelcomeActivity.this, MainActivity.class);
        startActivity(intent);
        finish();//关掉不用的界面
    }
    private  void goGuide(){
        Intent intent=new Intent(WelcomeActivity.this, GuideActivity.class);
        startActivity(intent);
        finish();//关掉不用的界面
    }
}

  GuideActivity.java

//点随着view的改变而改变,需要实现改变的监听方法,重写ViewPager.OnPageChangeListener
public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {

    private ViewPager viewPager;
    private ViewPagerAdapter adapter;
    private List views;//声明view集合
    private ImageView[] dots;//声明图像点的集合
    private int[] ids={R.id.iv1,R.id.iv2,R.id.iv3};//获取点id的集合

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);
        initViews();
        initDots();
    }

    private void initViews() {//初始化view
        LayoutInflater inflater=LayoutInflater.from(this);
        views=new ArrayList<>();
        views.add(inflater.inflate(R.layout.one_view,null));
        views.add(inflater.inflate(R.layout.two_view,null));
        views.add(inflater.inflate(R.layout.three_view,null));
        adapter=new ViewPagerAdapter(views,this);
        viewPager=findViewById(R.id.viewPager);
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(this);//viewPager实现监听
        //第三个页面获取id
        views.get(2).findViewById(R.id.btn_main).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent_main2=new Intent(GuideActivity.this, MainActivity.class);
                startActivity(intent_main2);
            }
        });
    }
    private void initDots(){  //初始化点
        dots=new ImageView[views.size()];//实例化对象
        for (int i=0;i

引导页适配器:ViewPagerAdapter.java

public class ViewPagerAdapter extends PagerAdapter {

    private List views;//创建显示页面view集合
    private Context context;//创建上下文对象


    public ViewPagerAdapter(List views,Context context){
        this.context=context;
        this.views=views;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(views.get(position));//view切换时移除当前页面view
    }


    //加载添加view的方法,类似于ListView中的getView()
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(views.get(position));
        return views.get(position);
    }

    @Override
    public int getCount() {
        return views.size(); //获取view的数量
    }


    //判断当前view是不是需要的对象
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return (view==o);
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private GifView gifView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gifView = findViewById(R.id.gifView);
        gifView.setGifImage(R.drawable.girl);
        gifView.setShowDimension(getWindowManager().getDefaultDisplay().getWidth(),getWindowManager().getDefaultDisplay().getHeight());//获取屏幕的宽高
//        gifView.setGifImageType(GifView.GifImageType.WAIT_FINISH);
        //gifView.setGifImageType(GifView.GifImageType.COVER);
    }

}

运行效果:


 

GitHub源码:https//github.com/dpl12/ViewPagerDemo

 

你可能感兴趣的:(Android,Native,基础)