Fragment和ViewPager的简单实用

———-没有梦想是多么可怕,也许小时候的梦想还记得吗?

学习引导页的使用方式
1.在app项目的开发中,使用引导页是每一个应用软件的必备功能,尽管他只在整个生命周期中只会出现一次,相当于整个应用的门面,里面可以展示很多的内容,看设计者还有需求,话不多说,代码先行:

package com.welive.guidepage.activity;



import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.welive.R;
import com.welive.baseutil.BaseActivityManager;
import com.welive.baseutil.BaseAppCompatActivity;
import com.welive.baseutil.BaseSharedPreferences;
import com.welive.guidepage.adapter.viewPagerAdapter;
import com.welive.loading.activity.loading;

import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

/**
 * 学习引导页,ViewPager+效果实现
 *
 * Created by welive on 2017/1/2.
 */

public class StartPage extends BaseAppCompatActivity{


    private ViewPager viewPager;

    private ImageView iv_Point0,iv_Point1,iv_Point2,iv_Point3;
    //滑动界面的 末尾值,初始值
    private int oldScrollX,ScrollX;
    //View当前所处的滑动界面的位置
    private int m_position;

    @Override
    public void onClick(View v) {

    }
    @Override
    public void setInit() {
        setContentView(R.layout.startpage_main);
        //类的添加管理
        //viewPager实例化控件
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        //下方的四个显示图标
        iv_Point0 = (ImageView) findViewById(R.id.iv_Point0);
        iv_Point1 = (ImageView) findViewById(R.id.iv_Point1);
        iv_Point2 = (ImageView) findViewById(R.id.iv_Point2);
        iv_Point3 = (ImageView) findViewById(R.id.iv_Point3);
        //适配器对ViewPager进行适配,比较简单
        List<Integer> lists = new ArrayList<>();
        //四张图片的ID
        lists.add(R.mipmap.start_page0);
        lists.add(R.mipmap.start_page1);
        lists.add(R.mipmap.start_page2);
        lists.add(R.mipmap.start_page3);
        viewPager.setAdapter(new viewPagerAdapter(getSupportFragmentManager(),lists));

        /*
        * viewPager的切换界面的监听显示
        * */
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {

                m_position = position;
                switch (position) {
                    case 0:
                        iv_Point0.setImageResource(R.drawable.oval_main_radius);
                        iv_Point1.setImageResource(R.drawable.oval_gray_radius);
                        break;
                    case 1:
                        iv_Point0.setImageResource(R.drawable.oval_gray_radius);
                        iv_Point1.setImageResource(R.drawable.oval_main_radius);
                        iv_Point2.setImageResource(R.drawable.oval_gray_radius);
                        break;
                    case 2:
                        iv_Point1.setImageResource(R.drawable.oval_gray_radius);
                        iv_Point2.setImageResource(R.drawable.oval_main_radius);
                        iv_Point3.setImageResource(R.drawable.oval_gray_radius);
                        break;
                    case 3:
                        iv_Point2.setImageResource(R.drawable.oval_gray_radius);
                        iv_Point3.setImageResource(R.drawable.oval_main_radius);
                        break;
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });



        viewPager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {


                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        oldScrollX = (int)event.getX();
                        break;
                    case MotionEvent.ACTION_UP:
                        /**
                         * 在引导页面结束前一定要修改SharedPreferences里边的值,这样第二次进入的话才会跳转到主页面,不进引导页。
                         */
                        if((oldScrollX - event.getX()) > 100 && (m_position == 3)){

                            //当程序操作至这一步便将整个程序设置为不再是第一次启动
                            BaseSharedPreferences.put(StartPage.this, "FirstStartApp", false);
                            Intent intent=new Intent(StartPage.this,loading.class);
                            startActivity(intent);
                            //销毁Activity
                            BaseActivityManager.getInstance().finishActivity(StartPage.this);
                        }
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

    }
}

viewPager.addOnPageChangeListener ——> ViewPager的滑动监听类,之前的setOnPageChangeListener被弃用了

viewPager.setOnTouchListener ——> VewPager界面的触摸事件,监听滑动的距离,以作为相应的需求进行调整

viewPager.setAdapter(new viewPagerAdapter(getSupportFragmentManager(),lists));—–>
ViewPager的适配器,传入的参数FragmentManaget如果继承的是Activity,需要使用到V4包的getSupportFragmentManager(),V7包里面的getFragmentManager()。

public viewPagerAdapter(FragmentManager fm,List<Integer> list) {
        super(fm);
        this.lists = list;
    }

2.AdapterActivity(ViewPager的FragmentPagerAdapter)
使用ViewPager的Adapter中,跟ListView的适配器相似。
*public Fragment getItem(int position) {
return StartPageFragment.newInstance(lists.get(position));
}*
这个方法是连接Fragment
//适配器
*package com.welive.guidepage.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.welive.guidepage.fragment.StartPageFragment;

import java.util.List;

/**
* 简单的使用,使用到的View
*
* Created by welive on 2017/1/3.
*/

public class viewPagerAdapter extends FragmentPagerAdapter {

private List<Integer> lists;


public viewPagerAdapter(FragmentManager fm,List<Integer> list) {
    super(fm);
    this.lists = list;
}

@Override
public Fragment getItem(int position) {
    return StartPageFragment.newInstance(lists.get(position));
}

@Override
public int getCount() {
    return lists.size();
}

}
*

3.Frament(碎片化)

*package com.welive.guidepage.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.welive.R;

/**
* 创建一个Fragment来进行图片的引用,其实在这里可以使用简单的View加载
*
* A simple {@link Fragment} subclass.
*/
public class StartPageFragment extends Fragment {

public StartPageFragment() {
    // Required empty public constructor
}


public static StartPageFragment newInstance(int drawableId) {

    Bundle args = new Bundle();
    args.putInt("drawableId",drawableId);
    StartPageFragment fragment = new StartPageFragment();
    fragment.setArguments(args);
    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.start_page_fragment, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ImageView iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
    int drawableId = getArguments().getInt("drawableId");
    iv_icon.setImageResource(drawableId);
}

}
*

newInstance这个方法是在AS中推荐使用的,可以自动生成代码块,
StartPageFragment fragment = new StartPageFragment();
fragment.setArguments(args);//设置数据

getArguments().getInt(“drawableId”);//使用数据

将相应的数据进行设置,最后配上xml布局

<?xml version="1.0" encoding="utf-8"?>
<!--android.support.design.widget.CoordinatorLayout    design的类,该布局是一个改装过的FrameLayout-->
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    >
    <!--使用ViewPager的使用,这里只是对ViewPager的简单的使用-->
        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            >
        </android.support.v4.view.ViewPager>



    <!--还需要四个提示的点,来进行显示,以表示当前的进度-->
    <LinearLayout
        android:id="@+id/ly_hintPoint"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|bottom"
        android:layout_marginBottom="40dp"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/iv_Point0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/oval_main_radius"
            />

        <ImageView
            android:id="@+id/iv_Point1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/oval_gray_radius"
            />

        <ImageView
            android:id="@+id/iv_Point2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/oval_gray_radius"
             />

        <ImageView
            android:id="@+id/iv_Point3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/oval_gray_radius"
             />
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>

新年最后一篇文章,祝大家新年快乐!!!明年继续再战

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值