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>

新年最後一篇文章,祝大家新年快樂!!!明年繼續再戰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章