ViewPager(4)用viewpager实现splash view
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的更多相关文章
- Android ViewPager 里有子ViewPager的事件冲突
在Android应用中有时候要用到类似网易新闻左右滑动页面且页面里又有左右滑动的图片功能,我不知道网易是怎么实现的,本人的做法是外面的BaseFragmentActivity布局就是TabViewPa ...
- 【Android开发日记】之入门篇(十五)——ViewPager+自定义无限ViewPager
ViewPager 在 Android 控件中,ViewPager 一直算是使用率比较高的控件,包括首页的banner,tab页的切换都能见到ViewPager的身影. viewpager 来源自 v ...
- ViewPager(3)用viewpager实现tabhost
1.示例 2.代码 2.1 TabViewPagerMain.java import android.graphics.drawable.Drawable; import android.os.Bun ...
- andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果.没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足 ...
- Android——ViewPager滑动背景渐变(自定义view,ViewPager)
效果: ActivityBackgroundImage,java(自定义视图) package com.example.chenshuai.test322; import android.conten ...
- 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activ ...
- 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...
- 解决Fragment中使用ViewPager时,ViewPager里的Fragment错位和空白问题
这两天开始在改OSChina的开源android客户端,打算用Fragment来分离Main这个Activity里的功能.用Fragment嵌套ViewPager+Fragment的时候发现问题. 红 ...
- ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. 以下代码是转载的,经本人测试,可以用!!! 转载地址:http://b ...
随机推荐
- [NOIP2005] 提高组 洛谷P1054 等价表达式
题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数 ...
- Codeforces679C. Bear and Square Grid
n<=500,n*n的01矩阵,可以选择一个k*k的矩阵全变1,求最大1联通区域. 敢敢n^3..模拟k*k的矩阵的位置,从左到右扫的时候,每变一个位置只会引起边界的信息变化,就记含边界的k*k ...
- msp430入门学习23
msp430的ADC(模数转换) msp430入门学习
- 基于jQuery的图片加载loading效果插件
基于jQuery的图片加载loading效果插件 图片loading的效果是网页中比较常见的,尤其是对大图片,loading效果让用户能够明白图片加载的过程. 实现思路也是比较简单的: $.fn.Lo ...
- CSU - 1333 1333: Funny Car Racing(spfa)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 这题多了一个限制条件是每一条路都会规律的开放a时间关闭b时间,车子必须在开放的时候进入,在关 ...
- 【转载】Spring Boot【快速入门】2019.05.19
原文出处:https://www.cnblogs.com/wmyskxz/p/9010832.html Spring Boot 概述 Build Anything with Spring Boot ...
- Java并发包——线程通信
Java并发包——线程通信 摘要:本文主要学习了Java并发包里有关线程通信的一些知识. 部分内容来自以下博客: https://www.cnblogs.com/skywang12345/p/3496 ...
- Java高并发实战,锁的优化
锁优化 这里的锁优化主要是指 JVM 对 synchronized 的优化. 自旋锁 互斥同步进入阻塞状态的开销都很大,应该尽量避免.在许多应用中,共享数据的锁定状态只会持续很短的一段时间.自旋锁的思 ...
- 选择器的使用(target选择器)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- 实战!利用MSF批量扫描校园网中含有MS17_010漏洞的主机并入侵
利用ms17_010的永恒之蓝在前些日子火爆了一段时间,校园网中也声称封锁了相应端口.最近在搞MSF的深入学习,于是有了下文. ms17_010扫描工具 msf中的辅助模块含有一个强大的ms17_01 ...