ViewPager (下)-- 利用 Fragment 实现美丽的 页面切换
之前用的ViewPager适用于简单的广告切换,但实现页面间的切换最好是用官方推荐的Fragment来处理.
本人力争做到最简单、最有用,是想以后用到的时候能够方便的拿过来复制就能够了.
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDgyNTIyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDgyNTIyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDgyNTIyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
功能:可点击button切换页面,也可滑动界面切换页面.
文件:java文件5个、xml文件4个、.9图片4张
java主类:
<span style="font-size:12px;">package com.example.viewpageractivity; import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.Button; public class MainActivity extends FragmentActivity { public ViewPager mViewPager;
public Button bt_myclass_studing;
public Button bt_myclass_over; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //调用封装好的actionbar
BuildingActionBar.setActionBarLayout(R.layout.actionbar,
MainActivity.this); bt_myclass_studing = (Button)this.findViewById(R.id.id_myclass_button_studing);
bt_myclass_over = (Button)this.findViewById(R.id.id_myclass_button_over); bt_myclass_studing.setText("正在进行");
bt_myclass_over.setText("已结课"); bt_myclass_studing.setOnClickListener(new myButtonListener());
bt_myclass_over.setOnClickListener(new myButtonListener()); //构建适配器
FragmenAdapter mFragmenAdapter = new FragmenAdapter(this.getSupportFragmentManager()); mViewPager = (ViewPager)this.findViewById(R.id.id_myclass_viewpager); mViewPager.setAdapter(mFragmenAdapter); //加入滑动监听
mViewPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageSelected(int arg0) {
switch(arg0){
case 0:
setButtonColor(true);
break;
case 1:
setButtonColor(false);
break;
}
}
}); setButtonColor(true);
} /**
* 设置按钮背景色
* 附上色值
* liteblue : #a1dff8
* */
public void setButtonColor(boolean myTouchButton) { if (myTouchButton == true) {
//当点击左边按钮的点击效果
bt_myclass_studing.setBackgroundResource(R.drawable.title_switch_left_on);
bt_myclass_studing.setTextColor(getResources().getColor(R.color.white));
bt_myclass_over.setBackgroundResource(R.drawable.title_switch_right_off);
bt_myclass_over.setTextColor(getResources().getColor(R.color.liteblue));
mViewPager.setCurrentItem(0, true);
} else {
//当点击右边按钮的点击效果
bt_myclass_over.setBackgroundResource(R.drawable.title_switch_right_on);
bt_myclass_over.setTextColor(getResources().getColor(R.color.white));
bt_myclass_studing.setBackgroundResource(R.drawable.title_switch_left_off);
bt_myclass_studing.setTextColor(getResources().getColor(R.color.liteblue));
mViewPager.setCurrentItem(1, true);
}
} /**
* 按钮的监听
* */
class myButtonListener implements View.OnClickListener{ @Override
public void onClick(View arg0) {
switch(arg0.getId()){
case R.id.id_myclass_button_studing:
setButtonColor(true);
break;
case R.id.id_myclass_button_over:
setButtonColor(false);
break;
}
}
} }
</span>
FragmentPagerAdapter适配器类
<span style="font-size:12px;">package com.example.viewpageractivity; import java.util.ArrayList;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; public class FragmenAdapter extends FragmentPagerAdapter{ List<Fragment> mFragment; public FragmenAdapter(FragmentManager fm) {
super(fm); mFragment = new ArrayList<Fragment>(); mFragment.add(new FragmentActivityA()); mFragment.add(new FragmentActivityB()); } @Override
public Fragment getItem(int arg0) {
return mFragment.get(arg0);
} @Override
public int getCount() {
return mFragment.size();
} }
</span>
FragmentActivityA类
<span style="font-size:12px;">package com.example.viewpageractivity; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class FragmentActivityA extends Fragment{ public View myView; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { //加入布局文件
myView = inflater.inflate(R.layout.fragmenta, container, false); return myView; }
}
</span>
FragmentActivityB类
<span style="font-size:12px;">package com.example.viewpageractivity; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class FragmentActivityB extends Fragment{ public View myView; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { //加入布局文件
myView = inflater.inflate(R.layout.fragmentb, container, false); return myView;
} }
</span>
之前用到的封装好的Actionbar类
<span style="font-size:12px;">package com.example.viewpageractivity; import android.app.ActionBar;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
/**
* 设置action bar
* */
public class BuildingActionBar {
public static ActionBar mActionbar;
/**
* 设置action bar
* */
public static void setActionBarLayout(int layoutID,Activity mActivity) { mActionbar = mActivity.getActionBar(); if (mActionbar != null) { // 设置home标题隐藏
mActionbar.setDisplayShowHomeEnabled(false); // 使自己定义的普通View能在title栏显示。即actionBar.setCustomView能起作用
mActionbar.setDisplayShowCustomEnabled(true); LayoutInflater inflator = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflator.inflate(layoutID, null); ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mActionbar.setCustomView(v, layout); } else {
Log.e("BuildingActionBar", "actionbar为空");
}
}
}
</span>
actionbar的xml文件
<span style="font-size:12px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actionbarLayoutId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#1D92F9" > <TextView
android:id="@+id/actionbar_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textColor="#fff"
android:layout_marginLeft="3dip"
android:text="左边"
android:textSize="20sp" /> <RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerVertical="true" > <Button
android:id="@+id/id_myclass_button_studing"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:background="@drawable/title_switch_left_off"
android:textColor="#A3A3A3"
android:textSize="15sp" /> <Button
android:id="@+id/id_myclass_button_over"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_toRightOf="@id/id_myclass_button_studing"
android:background="@drawable/title_switch_right_off"
android:textColor="#A3A3A3"
android:textSize="15sp" />
</RelativeLayout> </RelativeLayout></span>
主类的xml文件
<span style="font-size:12px;"><RelativeLayout 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"
tools:context=".MainActivity" > <android.support.v4.view.ViewPager
android:id="@+id/id_myclass_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </RelativeLayout></span>
还有两个fragmentActivity 的布局文件可任意定义 就不再贴上来了
ViewPager (下)-- 利用 Fragment 实现美丽的 页面切换的更多相关文章
- Windows下利用Chrome调试IOS设备页面
本文介绍如何在 Windows 系统中连接 iOS设备 并对 Web 页面进行真机调试 必须前提 iOS设备.数据线 Node.js 环境 Chrome 浏览器 环境准备 安装Node环境 参考Nod ...
- centos下利用phantomjs来完成网站页面快照截图
最近研究了下phantomjs,感觉还是非常不错的. 首先到官网下载一个源码包 http://phantomjs.org/download.html 点击源码包下载如图: 然后在linux下将必要的一 ...
- 利用pushState开发无刷页面切换
转载:http://www.cnblogs.com/flash3d/archive/2013/10/23/3384823.html 实现目标 页面的跳转(前进后退,点击等)不重新请求页面 页面URL与 ...
- 利用pushState开发无刷页面切换(转)
相关文档:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulatingthebrowser_history 实现目标 ...
- Android中通过Fragment进行简单的页面切换
首先是activity中的布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constr ...
- Android之怎样实现滑动页面切换【Fragment】
Fragment 页面切换不能滑动 所以对于listview 能够加入的左右滑动事件 .不会有冲突比如(QQ的好友列表的删除) Fragment 和viewpager 的差别 Viewpager ...
- Qt学习笔记(2)-利用StackWidget实现选项卡式页面
学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...
- ionic-native-transitions调用原生页面切换实现ionic路由切换
废话不多说:ionic-native-transitions调用原生页面切换实现ionic路由切换,从而大大提升ionic应用的性能. ionic-native-transitions是一个ionic ...
- ViewPager和Fragment组合 v4包下的页面切换
/* *主页面下 */ //-------------主页面下---------------------- package com.example.viewpagerfragment; import ...
随机推荐
- Codeforces--602A--Two Bases(水)
Two Bases Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit St ...
- ps切图时常用的操作与快捷键
一:两种切片方法 第一种: 1.使用切片工具划分好你要切的模块 2.点击'存储为web所有格式',在存储之前可以修改图片的品质来改变文件的大小. 3.在存储时切片有三种选择方式,按照自己的需要选择. ...
- angularjs 页面缓存及动态刷新解决方案
一.准备工作 框架:angularjs ui组件库:ionic1 二.页面缓存cache 路由设置cache参数,true为缓存,false为不缓存,代码如下: angular.module('app ...
- BZOJ5408: string(广义后缀自动机,LCT)
传送门 解题思路: 首先在后缀树上,确定了一个节点就相当于确定了一个串,那么一个点对应的串在另外一个点对应的串产生贡献,当且仅当这个点在当前点子树内. 那么考虑一个新的点在串中对串答案的贡献在一条树链 ...
- hzwer 模拟题 祖孙询问
祖孙询问 题目描述 已知一棵n个节点的有根树.有m个询问.每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系. 输入输出格式 输入格式: 输入第一行包括一个整数n表示节点个数. 接下来n行每行一 ...
- Cocos2d-x手机游戏开发与项目实践具体解释_随书代码
Cocos2d-x手机游戏开发与项目实战具体解释_随书代码 作者:沈大海 因为原作者共享的资源为UTF-8字符编码.下载后解压在win下显示乱码或还出现文件不全问题,现完整整理,解决全部乱码问题,供 ...
- swift菜鸟入门视频教程-12-21讲
前段时间录制的swift教程.一直懒就没有发出来,有些教程是在xcode beta2的时候录制的,所以可能如今不太适合了,可是还是会有点帮助,懒了不想写太多的东西了,基本上就是依照官方文档上面的章节做 ...
- java基本的语法
Java语言发展史 课程大纲: Java语言发展史: 1.sun公司1995年推出,2009年Oracle公司收购sun: 下载: 1.到Oracle官网下载 Java体系与特点 课程大纲: J ...
- Mysql数据库调优和性能优化
1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开源数据库,但是mysql数据库的默认设置性能非常 ...
- mac: brew的删除
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" ...