使用 ViewPagerIndicator + FragmentPagerAdapter 实现 tab 切换

基于Cloudflare R2与Workers构建免费个人图床:从原理到实践 对象存储(Object Storage)作为云原生架构的核心组件,其核心原理是将数据作为对象(Object)而非文件块进行管理,每个对象包含数据、元数据和唯一标识符。这种设计使其天然适合存储图片、视频等非结构化数据,具备高扩展性、高可用性和低成本优势。在技术价值层面,对象存储通过RESTful API(如S3兼容接口)提供标准化的数据存取能力,结合无服务器计算(Serverless)的边缘处理逻辑,能够构建出高并发、低延迟的轻量级应用。这一技术组合的典型应用场景包括静态资源托管、内容分发网络(CDN)加速以 阅读详情

主界面

本项目导入的是 v4 包的Fragment

package com.gaoo.tab04;
import com.viewpagerindicator.TabPageIndicator;
import java.util.List;

/**
 * 使用 ViewPagerIndicator + FragmentPagerAdapter 实现 tab 切换
 * //导入 Indicator_library
 */
public class MainActivity extends FragmentActivity {

    private ViewPager mViewPager; //viewpager
    TabPageIndicator mTabPageIndicator; //指示器
    List<Fragment> mFragmentList; //数据源,类型是 Fragment

    private TabAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        mViewPager = (ViewPager) findViewById(R.id.id_viewPager);
        mTabPageIndicator = (TabPageIndicator) findViewById(R.id.id_indicator);

        mAdapter = new TabAdapter(getSupportFragmentManager());

        mViewPager.setAdapter(mAdapter);

        mTabPageIndicator.setViewPager(mViewPager,0); //设置默认选中页
    }
}

Adapter 继承自 FragmentPagerAdapter

实现了2个方法和另外一个 getPageTitle(int position) 方法.

package com.gaoo.tab04;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

/**
 * 指示器的 适配器 adapter
 */
public class TabAdapter extends FragmentPagerAdapter {

    public  static String[] TITLES = new  String[]{"金系掌门","木系掌门","土系掌门","水系","火系"};
    public TabAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        TabFragment tabFragment = new TabFragment(position); //在这里把 position传入 是为了不同的位置显示不同的标题
             return tabFragment;
    }

    @Override
    public int getCount() {
        return TITLES.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return TITLES[position];
    }
}
Fragment
/**
 * Fragment的内容区域
 */
public class TabFragment extends Fragment {
    public TabFragment() {    }
    private int pos;
    public TabFragment(int position) {
        this.pos = position;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.frag, null);
        TextView tv = (TextView) view.findViewById(R.id.id_text);
        tv.setText(TabAdapter.TITLES[pos]);
        return view;
    }
}

布局文件 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/top"/>

    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/id_indicator"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent">
    </com.viewpagerindicator.TabPageIndicator>

    <android.support.v4.view.ViewPager
        android:id="@+id/id_viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>

</LinearLayout>
顶部布局 top.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="48dp"
              android:background="#51badd"
              android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_margin="3dp"
        android:background="@drawable/logo"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:text="大运河"
        android:textColor="#ebeceaea"
        android:textSize="20sp"/>
</LinearLayout>

项目中需要用到 library_viewpagerindicator 类库
源码下载地址:
链接:http://pan.baidu.com/s/1c2iaxBq 密码:522p

项目运行效果图
项目运行效果图

FragmentPagerAdapter刷新fragment最完美解决方案 FragmentPagerAdapter刷新fragment最完美解决方案源代码 立即下载

相关推荐

4种 Tab选项 包括 FragmentPagerAdapter和ViewPagerIndicator

Tab选项卡几乎成为了App必备的一个功能,它的实现方法也是多种多样,本课程就将讲解迄今为止最主流的4种实现Tab的方法,包括ViewPager、Fragment、FragmentPagerAdapter和ViewPagerIndicator

android封面引导页面,ViewPagerIndicator

ViewPagerIndicator点击上方的release,可以下载最新的jar包Download sample Apk###1. 支持自定义tab样式###2. 支持自定义滑动块样式和位置###3. 支持自定义切换tab的过渡效果###4. 支持子界面的预加载和界面缓存###5. 支持设置界面是否可滑动###6. android:minSdkVersion="8" android:target...

weixin_28465009的博客 764

自定义ViewPagerIndicator---炫酷的导航栏指示器+ViewPager+Fragment

本人博客:自定义ViewPagerIndicator---炫酷的导航栏指示器+ViewPager+Fragment的demo

Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager

转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/24740977Android现在实现Tab类型的界面方式越来越多,今天就把常见的实现方式给大家来个总结。目前写了:1、传统的ViewPager实现2、FragmentManager+Fragment实现3、ViewPager+FragmentPagerAdapter实现4、Ta...

weixin_30305735的博客 387

让 ViewPager+Fragment 多样式变得简单——浅析ViewPagerIndicator 开源框架的用法(demo)

让 ViewPager+Fragment 多样式变得简单——浅析ViewPagerIndicator 开源框架的用法(简单实现框架中六种样式的demo)

MagicIndicator打造千变万化的ViewPager指示器(viewpager fragment)源码

MagicIndicator打造千变万化的ViewPager指示器(viewpager fragment),源码例子下载。直接引用开发扩展。

ActionBar+TabPageIndicator+ViewPager+FragmentPagerAdapter的Tab主界面

MainFragmentAdapter.java package com.example.ui; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.

shdhenghao3的专栏 7092

ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案

ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案

多种多样的App主界面TAB实现方法

多种多样的App主界面TAB实现方法 (1)ViewPager实现点击Tab切换和手势滑动切换 (2)Fragment实现点击Tab切换界面 (3)ViewPager和FragmentPagerAdapter实现点击Tab切换和手势滑动切换 (4)ViewPagerIndicator与ViewPager实现Tab (1)ViewPager实现点击Tab切换和手势滑动切换先

an13531829360的博客 1689

Android使用viewpager,tabpagerindicator实现tab切换

使用第三方的TabPageIndicator,viewpager,fragment,fragmentPagerAdapter实现顶部tab导航栏的切换

机器学习——径向基函数(RBF)神经网络

目录 一、什么是基函数 二、什么是径向基函数 三、为什么RBF神经网络使用一个径向基函数作为隐含层的激活函数 四、参数训练 五、RBF网络vs BP网络和 SVM 一、什么是基函数 著名的傅里叶变换是指:n个有参(权值)的正、余弦三角函数基的和式可以等价的表示任意一个周期函数,这里的“基”和我们数学中说的坐标基或向量基含义相同,即坐标空间中任意一个向量都可以用基向量的线性和表示出来。 因此,我们引入函数空间的概念,函数空间中的每个连续函数可以表示为基函数的线性组合,就像向量空间中的每..

CHWB2580的博客 6272

Android Tab实现

Android底部tab实现思路: 1、Viewpager实现底部Tab 思路:      (1)、编写三个布局,底部分类布局(bottom.xml),顶部标题布局(top.xml),中间内容布局(中间放置                                   Viewpager控件),可以在一个主布局中引入顶部和底部布局使用include layout属性。   

ostracod 1118

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

4种的App主界面Tab实现方法

第1章 ViewPager实现Tab第2章 Fragment实现—google 推荐使用<?xml version="1.0"?>-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http

u011127787的专栏 1333

南 京 农 业 大 学 试 题 纸 附表(rape.csv)是25个油菜材料,测得每个材料的千粒重、亚油酸等的含量. (1) 对物质含量的八个指标作主成分分析,画出碎石图和主成分得分图; (2) 选

(1)请用n1

Mrrunsen的博客 498

基于matlab的轴承损伤分析动力学建模仿真

高质量的轴承在正确的使用下,可以使用很长一段时间,如果过早的出现损伤,很可能是因为选型错误,使用不当或润滑不良造成的。因此,在安装轴承时,我们需要记录机器种类,安装部位,使用条件及周围配合。通过研究总结轴承损伤的类型,发生问题时的使用环境,以避免类似情况再次发生。轴承损伤方式按下述图片分类,我们可以图片中显示的主要特征来判断轴承损伤形式。01、压痕碰伤卡入固体异物或冲击造成的表面凹坑及安装是的擦伤◆固体异物侵入◆在倾斜状态下安装◆安装不良造成的撞击,脱落◆卡入剥离片◆改善安装、使用方法。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 2667

android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...

一、ViewPageIndicator开源框架的基本用法我们先得去Github上面下载这个库,下载地址:https://github.com/JakeWharton/Android-ViewPagerIndicator,下载下来之后你可以运行例子,来看看我们需要什么样的效果,然后在此基础上改成我们自己想要的效果1.如何使用开源框架第1步:improt library项目第2步:导入library进...

weixin_42360846的博客 780

RK3588 Android12 添加HDMI和喇叭声音通道切换选项

rk3588 android12系统默认接hdmi out时,声音会切换到hdmi out输出,主板声卡喇叭输出会没有声音输出。现在添加一个选项设置hdmi out时,声音可以保持主板声卡喇叭输出。

Android系统开发笔记 4164

Android最主流的4种实现Tab的方法

Tab选项卡几乎成为了App必备的一个功能,它的实现方法也是多种多样,本文将讲解迄今为止最主流的4种实现Tab的方法,包括ViewPager、Fragment、FragmentPagerAdapter和ViewPagerIndicator。

PYH8023的博客 1万+

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2813

【ROS机器人系统】自主导航+YOLO目标检测+语音播报

完成自主导航功能,并在小车移动至指定地点的过程中,通过机器人的摄像头检测导航途中所见物体,识别出物体的种类(框选出不同物体并标注识别结果),结合科大讯飞语音合成模块对识别结果进行语音播报。..............................

南京大学软件工程硕士在读 2万+

Android使用开源库ViewPagerIndicator实现Tab选项和左右滑动

顶部选项卡在应用中算是比较常见的今天使用github开源项目ViewPagerIndicator结合Fragment实现Tab选项 先看下效果图 第一步下载ViewPagerIndicator 下载地址:https://github.com/JakeWharton/ViewPagerIndicator 第二步新建一个项目然后把ViewPagerIndicator库依赖进去 然后打开se...

然了个然 812

RK3576 Buildroot 双机 ADB 异常排障实录:同版 `boot.img`,一台可识别一台不可识别

进程在跑”不等于“USB 枚举成功”,adbd存活只是必要不充分条件。生产环境中的全局别名可能反向污染系统脚本。shell 命令替换中的字符串问题,必须做字节级验证(od -tx1相比“改环境规避”,核心脚本对输入做鲁棒处理更可长期维护。

小灰灰的博客 212

Android ViewPager与Indicator实现网易新闻Tab导航

在Android开发中,ViewPager作为核心页面容器组件,配合指示器(Indicator)可实现流畅的Tab导航效果。其底层基于Adapter模式管理页面生命周期,通过预加载机制和滑动事件处理保证交互流畅性。ViewPagerIndicator库采用解耦设计,提供多种可扩展的指示器样式,特别适合新闻资讯、电商详情等需要频繁切换的内容型场景。通过合理配置预加载数量、优化页面回收机制以及避免绘制性能问题,可以打造类似网易新闻客户端的丝滑标签页体验。当前推荐结合ViewPager2与TabLayout实现现

weixin_33694172的博客 397

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ViewPagerIndicator系列之--ViewPager+ActionBar+Fragment实现响应式可滑动Tab

今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可以相应地完成切换,而当我们点击Tab时,我们的屏幕同样可以完成切换。讲到滑动,我们会立即想到PagerView,讲到ActionBar,我们立即会想到将ActionBar的导航模式。那么,我们今天要做的

u010107250的专栏 700

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android-ViewPagerIndicator简单集成

现在很多的应用页面都是由一个个的TAB组成的,我们可以用布局加事件监听实现tab ,只是这样的控制非常麻烦,而且有很多的开源项目可以实现这样的功能,我们今天就介绍一下ViewPagerIndicator,这个项目就是可以实现这种效果。 首先下载依赖项目 https://github.com/JakeWharton/Android-ViewPagerIndicator   这个页

dalancon的专栏 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: ViewPager 切换页面
下一篇: Android 免费短信验证码--Mob.com
高锦湖
博客等级 码龄11年 11粉丝 141原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值