———-没有梦想是多么可怕,也许小时候的梦想还记得吗?
学习引导页的使用方式
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>
新年最后一篇文章,祝大家新年快乐!!!明年继续再战