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>

ViewPager(4)用viewpager实现splash view的更多相关文章

  1. Android ViewPager 里有子ViewPager的事件冲突

    在Android应用中有时候要用到类似网易新闻左右滑动页面且页面里又有左右滑动的图片功能,我不知道网易是怎么实现的,本人的做法是外面的BaseFragmentActivity布局就是TabViewPa ...

  2. 【Android开发日记】之入门篇(十五)——ViewPager+自定义无限ViewPager

    ViewPager 在 Android 控件中,ViewPager 一直算是使用率比较高的控件,包括首页的banner,tab页的切换都能见到ViewPager的身影. viewpager 来源自 v ...

  3. ViewPager(3)用viewpager实现tabhost

    1.示例 2.代码 2.1 TabViewPagerMain.java import android.graphics.drawable.Drawable; import android.os.Bun ...

  4. andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager

    近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果.没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足 ...

  5. Android——ViewPager滑动背景渐变(自定义view,ViewPager)

    效果: ActivityBackgroundImage,java(自定义视图) package com.example.chenshuai.test322; import android.conten ...

  6. 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析   1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3   2.Fragment生命周期以及与Activ ...

  7. 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析  原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...

  8. 解决Fragment中使用ViewPager时,ViewPager里的Fragment错位和空白问题

    这两天开始在改OSChina的开源android客户端,打算用Fragment来分离Main这个Activity里的功能.用Fragment嵌套ViewPager+Fragment的时候发现问题. 红 ...

  9. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

    ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. 以下代码是转载的,经本人测试,可以用!!! 转载地址:http://b ...

随机推荐

  1. android中SQLite实现

    SQLite操作类: package com.example.administrator.myapplication; import android.content.Context; import a ...

  2. Session&Cookie 的介绍和使用

    Session介绍与使用 1.Session基本介绍 Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序 ...

  3. Tomcat服务器调优

    一,目标:优化tomcat来提高访问的并发能力. 服务器提供的内存,cpu,以及硬盘的性能对数据的处理起决定性作用. tomcat的3种运行模式 tomcat的运行模式有3种: 1. bio默认的模式 ...

  4. list循环删除单个元素

    摘自https://www.cnblogs.com/pcheng/p/5336903.html JAVA中循环删除list中元素的方法总结 JAVA中循环遍历list有三种方式for循环.增强for循 ...

  5. MongoDB小结17 - find【查询条件$or】

    我们再添加一个游泳的人,并用$in查询游泳的人 db.user.find({"hobby":{"$in":["swimming"]}},{& ...

  6. Use Elasticksearch to solve TOP N issue

    The raw data is like timestamp, router, interface, src_ip, dst_ip, protocol, pkts 10000000, 1.1.1.1 ...

  7. 【转】基于Linux下的TCP编程

    http://blog.csdn.net/tigerjibo/article/details/6775534 一.Linux下TCP编程框架 TCP网络编程的流程包含服务器和客户端两种模式.服务器模式 ...

  8. struts2学习笔记(二)—— 获取登录信息及计算在线人数

    实现目的:       1.点击"Login"的超链接.进入登录页面       2.填写登录信息.提交表单,将用户信息保存进Session       3.显示用户名,并计算在线 ...

  9. Django打造大型企业官网(四)

    4.3.轮播图布局和样式 templates/news/index.html <div class="news-wrapper"> <div class=&quo ...

  10. Struts2 整合jQuery实现Ajax功能(1)

    技术领域非常多东西流行,自然有流行的道理.这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明白个概念: jQuery是什么:是使用javascript语言开发的,用 ...