95秀-ViewPager 使用实例

Activity的样式
<style name="under_live_indicator" parent="android:Theme.NoTitleBar"><item name="vpiTabPageIndicatorStyle">@style/main_live_tab_title_style</item><item name="android:windowBackground"> @android:color/transparent</item><item name="android:windowIsTranslucent">false</item><item name="android:windowAnimationStyle">@style/Animation.Activity.Translucent.Style</item></style>
<style name="main_live_tab_title_style" parent="Widget.TabPageIndicator">
<item name="android:background">@drawable/main_live_tab_selector</item><item name="android:textSize">16sp</item><item name="android:textColor">@color/main_live_indicator_color</item></style>
<style name="Animation.Activity.Translucent.Style" parent="@android:style/Animation.Activity"><item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item><item name="android:activityOpenExitAnimation">@anim/slide_out_left</item><item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item><item name="android:activityCloseExitAnimation">@anim/slide_out_right</item></style>
页面切换时的补间动画
slide_in_right
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="300"android:fromXDelta="100%p"android:toXDelta="0" /><alphaandroid:duration="300"android:fromAlpha="0.0"android:toAlpha="1.0" /></set>
slide_out_left
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="300"android:fromXDelta="0"android:toXDelta="-100%p" /><alphaandroid:duration="300"android:fromAlpha="1.0"android:toAlpha="0.0" /></set>
slide_in_left
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="300"android:fromXDelta="-100%p"android:toXDelta="0" /><alphaandroid:duration="300"android:fromAlpha="0.0"android:toAlpha="1.0" /></set>
slide_out_right
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="300"android:fromXDelta="0"android:toXDelta="100%p" /><alphaandroid:duration="300"android:fromAlpha="1.0"android:toAlpha="0.0" /></set>
选择器
main_live_tab_selector,是一张9path图,当获取焦点或选中或点击时显示,否则不显示
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/main_live_tab_bg" /></selector>
main_live_indicator_color,文字颜色选择器
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_enabled="false" android:color="#a8a8a8"/><item android:state_pressed="true" android:color="#666666"/><item android:state_selected="true" android:color="#666666"/><item android:color="#a8a8a8"/></selector>
为Activity设置样式
<activityandroid:name="com.lokinfo.m95xiu.MarketActivity"android:launchMode="singleTop"android:screenOrientation="portrait"android:theme="@style/under_live_indicator" ></activity>
Activity代码
public class MarketActivity extends BaseFragmentActivity{private ViewPager vp_charts;private TabPageIndicator tpi_charts;private MarketFragmentAdapter mAdapter;private int firstItem;@Overridepublic void onCreate(Bundle savedInstanceState) {pageName = "商城";super.onCreate(savedInstanceState);firstItem = getIntent().getIntExtra("item", 0);setContentView(R.layout.activity_viewpager);TitleBar titleBar = new TitleBar(this);titleBar.setViewText("返回", "商城");vp_charts = (ViewPager) findViewById(R.id.vp);tpi_charts = (TabPageIndicator) findViewById(R.id.tpi);mAdapter = new MarketFragmentAdapter(getSupportFragmentManager());vp_charts.setAdapter(mAdapter);tpi_charts.setViewPager(vp_charts);tpi_charts.setCurrentItem(firstItem);// 改变 TabPageIndicator 里面的字体左右 的padding 距离ViewGroup vg = (ViewGroup) tpi_charts.getChildAt(0);int vgChildCount = vg.getChildCount();for (int j = 0; j < vgChildCount; j++) {View vgChild = vg.getChildAt(j);if (vgChild instanceof TextView) {((TextView) vgChild).setPadding(10,11,11,11);}}}}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"android:orientation="vertical" ><includeandroid:id="@+id/title_bar"android:layout_width="match_parent"android:layout_height="@dimen/title_bar_height"android:layout_alignParentTop="true"layout="@layout/view_top_bar2" /><com.viewpagerindicator.TabPageIndicatorandroid:id="@+id/tpi"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/title_bar"android:background="@color/white" /><android.support.v4.view.ViewPagerandroid:id="@+id/vp"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/tpi" /><ImageViewandroid:id="@+id/iv_bg"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignTop="@id/vp"android:background="@drawable/main_bg_top" /></RelativeLayout>
Adapter代码
public class MarketFragmentAdapter extends FragmentPagerAdapter {private List<String> mList;public MarketFragmentAdapter(FragmentManager fm) {super(fm);mList = new ArrayList<String>();mList.add("普通VIP");mList.add("尊贵VIP");mList.add("钻石VIP");mList.add("车市");}@Overridepublic Fragment getItem(int position) {switch (position) {case 0:return VipFragment.createVipFragment("VIP");case 1:return VipFragment.createVipFragment("SVIP");case 2:return VipFragment.createVipFragment("DVIP");case 3:return new CarFragment();default:return null;}}@Overridepublic CharSequence getPageTitle(int position) {return mList.get(position);}@Overridepublic int getCount() {return mList == null ? 0 : mList.size();}}
内容Fragment
public class VipFragment extends BaseFragment implements OnEventListener {private NestedGridView gv_vip;private List<VipBena> mList;private VipAdapter mAdapter;private String vipType;private TextView tv_vip_time;public static VipFragment createVipFragment(String vipType) {VipFragment fragment = new VipFragment();Bundle bundle = new Bundle();bundle.putString("vipType", vipType);fragment.setArguments(bundle);return fragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {Bundle bundle = getArguments();if (bundle != null) vipType = bundle.getString("vipType");super.onCreate(savedInstanceState);pageName = "vip";}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_vip, null);initView();return view;}private void initView() {gv_vip = (NestedGridView) view.findViewById(R.id.gv_vip);tv_vip_time = (TextView) view.findViewById(R.id.tv_vip_time);updateVipTime();mList = new ArrayList<VipBena>();if (vipType.equals("DVIP")) {mList.addAll(VipManager.getINSTANCE().getDVipList());gv_vip.setNumColumns(2);} else if (vipType.equals("SVIP")) {mList.addAll(VipManager.getINSTANCE().getSVipList());gv_vip.setNumColumns(2);} else {mList.addAll(VipManager.getINSTANCE().getnormalVipList());gv_vip.setNumColumns(2);}mAdapter = new VipAdapter(context, mList, vipType);mAdapter.setEventListener(this);gv_vip.setAdapter(mAdapter);}@Overridepublic void onResume() {updateVipTime();super.onResume();}private void updateVipTime() {if (AppUser.getInstance().isLogin()) {tv_vip_time.setVisibility(View.VISIBLE);switch (AppUser.getInstance().getUser().getVipType()) {case 1:tv_vip_time.setText("您是普通VIP,剩余" + AppUser.getInstance().getUser().getVipExpires() + "天");break;case 2:tv_vip_time.setText("您是尊贵VIP,剩余" + AppUser.getInstance().getUser().getVipExpires() + "天");break;case 3:tv_vip_time.setText("您是钻石VIP,剩余" + AppUser.getInstance().getUser().getVipExpires() + "天");break;default:tv_vip_time.setText("您还不是会员,开通会员获取特权");break;}} else {tv_vip_time.setVisibility(View.GONE);}}/*** 购买vip后的回调*/@Overridepublic void onEventListener(boolean successed, String msg) {if (successed) updateVipTime();}}
95秀-ViewPager 使用实例的更多相关文章
- 仿网易新闻客户端头条ViewPager嵌套实例
要点: 1.重写组件public boolean onInterceptTouchEvent(MotionEvent event)方法 2.正确使用requestDisallowInterceptTo ...
- 95秀-自定义对话框 dialog 合集
普通的确认对话框 NormalDialog.java import android.app.Dialog; import android.content.Context; import android ...
- 95秀-异步http请求完整过程
最终调用时的代码 private void ansyClearApplyInfor() { RequestParams params = new RequestParams() ...
- 95秀-dialog 进度对话框 实用工具
工具Util public class DialogUtil { public static ProgressDialogView progressDialog; /** * ...
- 95秀-PullToRefreshListView 示例
正在加载.暂无数据页面 public class RefreshGuideTool { private RelativeLayout rl_loading_guide;//整个View ...
- 95秀-弹窗+listview+动画 示例
Dialog布局 dialog.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLay ...
- 直播【95秀】JNI 基本实现 简洁
2017-2-8 基本架构 1.使用SurfaceView在UI层面展示视频 2.通过JNI调用C代码控制视频的播放.停止 基本功能 1.从服务器获取正在直播的主播的列表信息 2.进入直播界面 3.可 ...
- Android学习记录:ViewPager实现欢迎页
许多APP在第一次启动的时候,都会有welcome page.近日尝试利用ViewPager来实现Welcome Page. d0711 完成记录,跟新下载地址 =================== ...
- ViewPager、Fragment、Matrix综合使用实现Tab滑页效果
原文地址:http://www.cnblogs.com/kross/p/3372987.html 我们实现一个上面是一个可以左右滑动的页面,下面是三个可点击切换的tab按钮,tab按钮上还有一个激活条 ...
随机推荐
- 【USACO 2.1.3】三值的排序
[题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ...
- 再谈CMake与RPATH
之前写过一篇<探讨CMake中关于RPATH的使用>,只要针对的方面是在编译生成之后(不包括安装的make install)如何去除RPATH的问题.今天给大家主要介绍一下如何让CMake ...
- (转)QT常用快捷键
F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 ...
- 清除div浮动的三种方式
html: <body> <div class="main"> <div class="first"></div> ...
- $().change事件
change([[data],fn]) 当元素的value值发生改变时发生change事件 适用于: 文本域 text textarea和select元素 text textarea 元素失去焦点时发 ...
- ECharts 是一款开源
ECharts
- c程序代码的内存布局(学好C的基础)
一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...
- JavaBean与EJB的区别与应用
JavaBean 是一种组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的 bean 可以询问和集成. EJB 是部署在服务器上的可执行组件或商业对象.有一个协议允许对其进行远程访问或 ...
- DC-DC转换器原理与应用
DC/DC转换器为转变输入电压后,有效输出固定电压的电压转换器.DC/DC转换器分为三类:升压型DC/DC转换器.降压型DC/DC转换器以及升降压型DC/DC转换器.根据需求可采用三类控制.PWM控制 ...
- C51 库函数(2)
3.2 STDIO.H:一般I/O函数 C51编译器包含字符I/O函数,它们通过处理器的串行接口操作,为支持其它I/O机制,只需修改getkey()和putchar()函数,其它所有I/O支持函数依赖 ...