1,示例

2,代码

SplashMain.java
 import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout; import com.txw.e.viewpager.R;
import com.txw.e.viewpager.main.MainActivity; /**
* A simple {@link Fragment} subclass.
*/
public class SplashMain extends Fragment { //1,在layout.xml中添加 ViewPagerFragment,它可以是顶级布局,如下:
/*
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
android:id="@+id/splash_pager"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
*/ //2,准备变量,ViewPager和 PagerAdapter ,OnPageChangeListener
ViewPager pager;
SplashViewPagerAdapter pagerAdapter; //3,初始化pager
void initPager(View v){
//从layout.xml中初始化pager
pager = (ViewPager) v.findViewById(R.id.splash_pager); //初始化page adapter
pagerAdapter = new SplashViewPagerAdapter(getFragmentManager()); //设置adapter
pager.setAdapter(pagerAdapter); //设置page切换监听者
pager.addOnPageChangeListener(onPageChangeListener); //设置pager切换动画
// pager.setPageTransformer(true, new DepthPageTransformer()); } //4,处理 pager 切换事件
//这里用的ViewPager.SimpleOnPageChangeListener,它什么也不做。
ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffset == ){
for (int i = ; i < indexer.getChildCount(); ++i){
View v = indexer.getChildAt(i);
if (i == position){
v.setBackgroundResource(R.drawable.splash_indexer_focused);
}else{
v.setBackgroundResource(R.drawable.splash_indexer);
}
}
}
} @Override
public void onPageSelected(int position) { } @Override
public void onPageScrollStateChanged(int state) { }
}; //5,重写切换动画类,可以把这个类放到外面去。
public class DepthPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.75f; public void transformPage(View view, float position) {
int pageWidth = view.getWidth(); if (position < -) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(); } else if (position <= ) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha();
view.setTranslationX();
view.setScaleX();
view.setScaleY(); } else if (position <= ) { // (0,1]
// Fade the page out.
view.setAlpha( - position); // Counteract the default slide transition
view.setTranslationX(pageWidth * -position); // Scale the page down (between MIN_SCALE and 1)
float scaleFactor = MIN_SCALE
+ ( - MIN_SCALE) * ( - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor); } else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha();
}
}
} LinearLayout indexer; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_splash_main, container, false); initPager(v); indexer = (LinearLayout) v.findViewById(R.id.splash_indexer); return v;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivity aty = (MainActivity) getActivity();
aty.getSupportActionBar().hide();
} @Override
public void onDestroy() {
super.onDestroy();
MainActivity aty = (MainActivity) getActivity();
aty.getSupportActionBar().show();
}
}
SplashViewPagerAdapter.java
 import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter; public class SplashViewPagerAdapter extends FragmentStatePagerAdapter { public SplashViewPagerAdapter(FragmentManager fm) {
super(fm); } @Override
public Fragment getItem(int position) {
SplashFragment fragment = new SplashFragment();
fragment.colorId = position;
return fragment;
} @Override
public int getCount() {
return ;
}
}
SplashFragment.java
 public class SplashFragment extends Fragment {

     public int colors[] = {Color.BLUE,Color.CYAN,Color.GREEN,Color.MAGENTA};

     public View    rootView;
public int colorId; View.OnClickListener clickListener = new View.OnClickListener(){ @Override
public void onClick(View v) {
if (colorId == ){
getFragmentManager().popBackStack();
}
}
}; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_splash, container, false); rootView.setBackgroundColor(colors[colorId]); rootView.setOnClickListener(clickListener); return rootView;
} }

3,xml

fragment_splash_main.xml

 <?xml version="1.0" encoding="utf-8"?>

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"> <android.support.v4.view.ViewPager
android:id="@+id/splash_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/> <LinearLayout
android:id="@+id/splash_indexer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="30dp"
android:orientation="horizontal"> <TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/splash_indexer"/> <TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/splash_indexer"/> <TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/splash_indexer"/> <TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/splash_indexer"/>
</LinearLayout> </FrameLayout>

fragment_splash.xml

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
tools:context="com.txw.e.viewpager.splash.SplashFragment">
</FrameLayout>

drawable/splash_indexer_focused.xml

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--<gradient-->
<!--android:endColor="#f793ac"-->
<!--android:gradientRadius="50"-->
<!--android:startColor="#fa1621"-->
<!--android:type="radial"/>--> <solid android:color="#FFFFFF" />
<size android:width="20dp" android:height="20dp"/> </shape>

drawable/splash_indexer.xml

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:endColor="#fa1621"
android:gradientRadius="50"
android:startColor="#f793ac"
android:type="radial"/>
<size
android:width="20dp"
android:height="20dp"/> </shape>

最新文章

  1. Prometheus 系统监控方案 二 安装与配置
  2. AgileEAS.NET SOA中间件平台更新日志 2015-04-28
  3. Nginx配置网站适配PC和手机
  4. js相对路径相关(比如:js中的路径依赖导入该js文件的路径)
  5. Shell基础:Shell和Mysql交互
  6. windows证书地址
  7. Java实现抽奖游戏
  8. xubuntu install nodejs
  9. TortoiseGit连接github不用每次输入用户名和密码的方法
  10. silverlight visifire控件图表制作——silverlight 后台方法ControlChart.xaml.cs
  11. [Q]关于无法进入主界面问题解答
  12. Laravel框架一:原理机制篇
  13. curl---一款实用的URL命令行网络通讯工具/库
  14. Caddy服务器搭建和实现文件共享
  15. vue 使用swiper的一些问题(页面渲染问题)
  16. sql语句order by排序问题
  17. C/C++ 多线程机制
  18. Python——tkinter操作
  19. # 20175227 2018-2019-2 《Java程序设计》第二周学习总结
  20. Android学习之基础知识十三 — 四大组件之服务详解第二讲(完整版的下载示例)

热门文章

  1. Linux下汇编语言学习笔记62 ---
  2. 选择器的使用(first-child和last-child选择器)
  3. rsyslogd系统日志服务总结
  4. python dos2unix
  5. 安装Nginx须要系统的辅助软件(linux)
  6. Loadrunner&amp;Jemeter进行手机APP压力测试
  7. Cookies 初识 Dotnetspider EF 6.x、EF Core实现dynamic动态查询和EF Core注入多个上下文实例池你知道有什么问题? EntityFramework Core 运行dotnet ef命令迁移背后本质是什么?(EF Core迁移原理)
  8. WebSphere报错指南
  9. 【跟我一步一步学Struts2】——登陆样例
  10. Python按行输出文件内容具体解释及延伸