android viewpagerindicator tab,ViewPager系列之顶部滑动indicator+viewPager
这个小插件用了githup上下载的一个第三方jar包。安装这个jar包就已经搞死我了,githup上下来直接把zip的后缀名改成了jar就复制粘贴到工程的lib下了,然后自己点击了Add as library没有用,还报出一堆缺少这个那个的内部jar包,也是醉了。。。耽误了不少时间,还要严格按照这个作者的引导,在build.gradle下写上规定的几句才能成功导进来。然后开始写这个小玩意,自己也是搞得一头灰,联系了写这个第三方jar包的作者,在他的交流下才能最终做好。。我的感想就是,不要随便使用第三方包,因为就算作者提供了文档,你还真的不一定能自己导入成功,作者提供了联系方式,还得像我遇到这个作者那么耐心引导才可能做得成。
好了,下面先上效果图看看做的小插件是什么样儿的。
下面是代码:
1. 主界面的布局文件,
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
android:id="@+id/indicator"
android:layout_width="fill_parent"
android:layout_height="50dp"
/>
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
主界面的java文件
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.shizhefei.view.indicator.FixedIndicatorView;
import com.shizhefei.view.indicator.IndicatorViewPager;
import com.shizhefei.view.indicator.slidebar.ColorBar;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
FixedIndicatorView indicator;
List list;
ViewPager viewPager;
IndicatorViewPager indicatorViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//这个FixedindicatorView是平分tab的屏幕长度的
indicator = (FixedIndicatorView) findViewById(R.id.indicator);
viewPager = (ViewPager) findViewById(R.id.viewPager);
list = new ArrayList();
Fragment courseFragment = new CourseFragment();
list.add(courseFragment);
Fragment discussFragment = new DiscussFragment();
list.add(discussFragment);
Fragment makeFriendsFragment = new MakeFriendsFragment();
list.add(makeFriendsFragment);
Fragment personalFragment = new PersonalFragment();
list.add(personalFragment);
Fragment teacherFragment = new TeacherFragment();
list.add(teacherFragment);
indicatorViewPager = new IndicatorViewPager(indicator, viewPager);
indicatorViewPager.setAdapter(adapter);
//设置滑动时的那一项的图形和颜色变化,ColorBar对应的是下划线的形状。
indicator.setScrollBar(new ColorBar(getApplicationContext(), Color.parseColor("#00B2EE"), 5));
viewPager.setOffscreenPageLimit(1);//缓存的左右页面的个数都是1
}
public IndicatorViewPager.IndicatorFragmentPagerAdapter adapter = new IndicatorViewPager.IndicatorFragmentPagerAdapter(getSupportFragmentManager()) {
private String[] tabNames = {"课程选择", "讨论区", "交友区", "个人中心", "教师主页"};
@Override
public int getCount() {
return list.size();
}
@Override
public View getViewForTab(int position, View convertView, ViewGroup container) {
//此方法设置的tab的页面和显示
if (convertView == null) {
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.tab,
container, false);
}
TextView tv = (TextView) convertView;
tv.setText(tabNames[position]);
return convertView;
}
@Override
public Fragment getFragmentForPage(int position) {
//设置viewpager下的页面
Fragment fragment = list.get(position);
return fragment;
}
};
}
2.ViewPager所包裹的fragment页面的java文件
import android.os.Bundle;
import com.shizhefei.fragment.LazyFragment;
public class CourseFragment extends LazyFragment {
//引用了第三方包提供的LazyFragment类和onCreateViewLazy方法
@Override
protected void onCreateViewLazy(Bundle savedInstanceState) {
super.onCreateViewLazy(savedInstanceState);
setContentView(R.layout.course);
}
}
3.indicator的tab的布局文件的书写
android:id="@+id/tv_Tab"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:textColor="#515151"
android:gravity="center"
android:text="TextView" />
4.导入的第三方jar包时build.gradle的设置
写入dependencies的后面三条
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.viewpagerindicator"
minSdkVersion 18
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/ViewPagerIndicator-master.jar')
implementation 'com.shizhefei:ViewPagerIndicator:1.1.7'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
android viewpagerindicator tab,ViewPager系列之顶部滑动indicator+viewPager相关推荐
- Android开发之可以在临界点左右滑动的ViewPager
老套路先上效果图: 可以在临界点滑动的ViewPager,上图效果是:两个ViewPager,一个垂直一个水平滑动的,这次主要讲解临界点左右滑动,实际上很简单,只需要自定义ViewPager在事件分发 ...
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...
上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...
- 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)
1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24740977 Android如今实现Tab类型的界面方式越来越多,今天就把常见的 ...
- android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
一.ViewPageIndicator开源框架的基本用法我们先得去Github上面下载这个库,下载地址:https://github.com/JakeWharton/Android-ViewPager ...
- android 局部tab页,安卓TabLayout+ViewPager实现切页
安卓使用TabLayout+ViewPager+Fragment 实现页面切换,可实现左右滑动切换视图界面和点击切换 可自定义菜单栏是在顶部还是在底部 一.实现效果: 二.实现过程: 2.1 一些重要 ...
- android tabpageindicator 参数,Android实现Tab布局的4种方式(Fragment+TabPageIndicator+ViewPager)...
Android现在实现Tab类型的界面方式越来越多,今天就把常见的实现方式给大家来个总结.目前写了: 1.传统的ViewPager实现 2.FragmentManager+Fragment实现 3.V ...
- android 应用切换滑动,Android应用中利用ViewPager实现多页面滑动切换效果示例
1.添加android support包因为上面的几个类都是在android support包中才提供,我们先添加包. 在Eclipse->Window->Android SDK Mana ...
- android 事件拦截 (Viewpager不可以左右滑动)
以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的. 现在做需求了,真的是什么需求都有,你作为开发都要去研究实现.比如说,只能点不能滑动的viewpager.其实这都可以不用view ...
- android view禁用,Android 禁止ViewPager的自带滑动效果
由于最近在做墨水屏的相关工作,ViewPager自带的滑动效果在墨水屏上表现的很不好,残影太重了.所以禁止自带的滑动效果,用接口来接管相关逻辑实现自处理. import android.content ...
最新文章
- 使用PySpark搭建机器学习模型
- Flask-1-05-CookieSession
- 51与PC通信协议设计及实现(三):51部分模块化分工及设计
- 【选型】项目方案总体设计--选型
- csredis封装_在.NET Core中使用CSRedis
- Hadoop笔记整理(三):Zookeeper
- JAVA中几种循环结构的表示_本文通过实例讲解给大家介绍Java中for、while、do while三种循环语句的区别,具体详情如下所示:第一种:for循环 循环结构for语句的格式...
- 线程(一)__同步以及死锁
- linux jdk1.8 32位下载永久地址,ubuntu,centos,java
- android optionmenu 动态显示,android – 如何在onCreateOptionsMenu中动态更改菜单
- 好用的Java编程软件,别说你还不知道!
- 如何在手机上安装linux系统并可视化界面
- linux wav 转mp3,linux下wav转换为mp3
- 基于OpenCV3.0的车牌识别系统设计(二)--车牌提取
- matlab怎么表示x的平方,用matlab算多项式x平方
- sox处理mp3,使用SoX将mp3文件拆分为TIME秒
- 列的完整性约束——设置表字段值自动增加(AUTO_INCREMENT)
- 无人机倾斜摄影全景建模三维数字沙盘电子沙盘人工智能开发教程视频第7课
- Windows 利用Anaconda创建pytorch等环境
- UVM TLM2: SystemC和SV 通信
热门文章
- 他发现了古老疟疾背后的元凶,也在质疑声中开创了致病生物的新时代
- 国家税务总局全国增值税发票查验平台-客户端
- Hexo添加Icarus主题
- 显示器分辨率一直跳_常见屏幕比例与显示器分辨率详解
- CTSC2016滚粗记 前篇
- 无视硬件检测直接运行Win10混合现实门户
- 基于Websocket协议的即时通讯系统设计与实现
- 收我叫mt3完整源码,不要拿网上的来忽悠,要求前后端完整,文档工具完整,重点可演示编译成功!联系我!
- 《Spring Boot极简教程》第1章 Spring Boot史前简述
- java getdate和getday,Date类的getDay()和getDate()方法