在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:ViewPagerIndicator开源软件地址:https://gitee.com/luckyjayce/ViewPagerIndicator开源软件介绍:ViewPagerIndicator###1. 支持自定义tab样式 ###7.导入方式<1>gradle导入 compile 'com.shizhefei:ViewPagerIndicator:1.1.4' 由于用到了v4和recyclerview所以也要导入他们 compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:recyclerview-v7:23.4.0' <2>jar包方式导入 Download sample Apk ###8.历史版本和更新信息 使用方法package com.shizhefei.indicator.guide;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import com.shizhefei.indicator.R;import com.shizhefei.view.indicator.Indicator;import com.shizhefei.view.indicator.IndicatorViewPager;import com.shizhefei.view.indicator.IndicatorViewPager.IndicatorPagerAdapter;import com.shizhefei.view.indicator.IndicatorViewPager.IndicatorViewPagerAdapter;public class GuideActivity extends FragmentActivity { private IndicatorViewPager indicatorViewPager; private LayoutInflater inflate; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_guide); ViewPager viewPager = (ViewPager) findViewById(R.id.guide_viewPager); Indicator indicator = (Indicator) findViewById(R.id.guide_indicator); // 将viewPager和indicator使用 indicatorViewPager = new IndicatorViewPager(indicator, viewPager); inflate = LayoutInflater.from(getApplicationContext()); // 设置indicatorViewPager的适配器 indicatorViewPager.setAdapter(adapter); } private IndicatorPagerAdapter adapter = new IndicatorViewPagerAdapter() { private int[] images = { R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4 }; /** * 获取tab */ @Override public View getViewForTab(int position, View convertView, ViewGroup container) { if (convertView == null) { convertView = inflate.inflate(R.layout.tab_guide, container, false); } return convertView; } /** * 获取每一个界面 */ @Override public View getViewForPage(int position, View convertView, ViewGroup container) { if (convertView == null) { convertView = new View(getApplicationContext()); convertView.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } convertView.setBackgroundResource(images[position]); return convertView; } /** * 获取界面数量 */ @Override public int getCount() { return images.length; } };} 效果图有了该类库你可以实现以下布局 主要的类1.ViewPager这个版本以后 android-support-v4 可以用原生的了 没有重写ViewPager。 2.使用LazyFragment来配合ViewPager的setOffscreenPageLimit进行懒加载界面和防止重新创建界面** 2.Indicator顾名思义是指示器的意思。有点像水平方向的listview 可以自定义item。 Indicator 1.FixedIndicatorView 主要用于固定大小来平均分配tab的情况。 2.ScrollIndicatorView 主要用于多个tab可以进行滑动。 3.RecyclerIndicatorView 主要用于无数个tab可以进行滑动。 3.indicatorViewPager用于将ViewPager和Indicator 联合使用。 indicatorViewPager.setAdapter(IndicatorPagerAdapter adapter) // 设置它可以自定义实现在滑动过程中,tab项的字体变化,颜色变化等等过渡效果 indicatorViewPager.setIndicatorOnTransitionListener(onTransitionListener); // 设置它可以自定义滑动块的样式 indicatorViewPager.setIndicatorScrollBar(scrollBar); // 设置page是否可滑动切换 indicatorViewPager.setPageCanScroll(false); /* * 设置缓存界面的个数,左右两边缓存界面的个数,不会被重新创建。 默认是1,表示左右两边 * 相连的1个界面和当前界面都会被缓存住,比如切换到左边的一个界面,那个界面是不会重新创建的。 */ indicatorViewPager.setPageOffscreenLimit(1); /* * 设置预加载界面的个数。左右两边加载界面的个数 默认是1,表示左右两边 相连的1个界面会和当前界面同时加载 */ indicatorViewPager.setPagePrepareNumber(1); // 设置页面切换监听 indicatorViewPager.setOnIndicatorPageChangeListener(onIndicatorPageChangeListener); // 设置page间的图片的宽度 indicatorViewPager.setPageMargin(1); // 设置page间的图片 indicatorViewPager.setPageMarginDrawable(d); 4.BannerComponent (无限轮播Banner)继承于IndicatorViewPager,所以使用方法和IndicatorViewPager一样 5.IndicatorPagerAdapter子类IndicatorFragmentPagerAdapter 用于 界面是fragment的形式。子类IndicatorViewPagerAdapter 用于 界面是View的形式. indicatorViewPager.setOnIndicatorPageChangeListener(onIndicatorPageChangeListener)设置界面的切换监听。 Indicator 既可以单独使用。也可以通过indicatorViewPager的形式联合viewpager一起使用。 6.ScrollBartab的滑动块通过indicatorViewPager.setIndicatorScrollBar(scrollBar);进行设置子类有 7.OnTransitionListener子类有 8.LazyFragment 懒加载FragmentFragment继承该类实现 显示Framgment的时候才会去创建你自己的界面布局,否则不创建。 1.实现原理: 2.回调方法: 3.使用方法 ##主力类库## 1.https://github.com/LuckyJayce/ViewPagerIndicator 2.https://github.com/LuckyJayce/MVCHelper 3.https://github.com/LuckyJayce/MultiTypeView 4.https://github.com/LuckyJayce/EventBus 5.https://github.com/LuckyJayce/LargeImage 6.https://github.com/LuckyJayce/GuideHelper 7.https://github.com/LuckyJayce/HVScrollView 8.https://github.com/LuckyJayce/CoolRefreshView 有了这些类库,让你6的飞起 说明项目 ViewPagerIndicator_Demo 是示例代码。 看了这个例子你会惊奇的发现里面居然都是通过viewpager实现,没有使用tabhost,而所有形式的tab都是用Indicator实现。项目 ViewPagerIndicator_Library 是类库 有什么建议可以发到我的邮箱 [email protected] 联系方式和问题建议
LicenseCopyright 2014 shizhefei(LuckyJayce)Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. |
请发表评论