———-沒有夢想是多麼可怕,也許小時候的夢想還記得嗎?
學習引導頁的使用方式
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>
新年最後一篇文章,祝大家新年快樂!!!明年繼續再戰