• Stars
    star
    623
  • Rank 72,088 (Top 2 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LitePager,一个轻量级的ViewPager,仿新版网易云歌单广场

LitePager,一个轻量级的ViewPager,仿新版网易云歌单广场

博客详情: https://blog.csdn.net/u011387817/article/details/89142467

使用方式:

添加依赖:

implementation 'com.wuyr:litepager:1.3.1'

APIs:

Method Description
addViews(int... layouts) 批量添加子View
addViews(View... views) 批量添加子View
setSelection(View target) 选中指定子View
setSelection(int index) 根据索引选中子View
setOrientation(int orientation) 设置滑动方向(默认: ORIENTATION_HORIZONTAL):
ORIENTATION_HORIZONTAL(水平)
ORIENTATION_VERTICAL(垂直)
setFlingDuration(long duration) 设置动画的时长
setTopScale(float scale) 设置顶层缩放比例
setTopAlpha(float alpha) 设置顶层不透明度
setMiddleScale(float scale) 设置中层缩放比例
setMiddleAlpha(float alpha) 设置中层不透明度
setBottomScale(float scale) 设置底层缩放比例
setBottomAlpha(float alpha) 设置底层不透明度
setOnScrollListener(OnScrollListener listener) 设置滚动状态监听:
STATE_IDLE(静止状态)
STATE_DRAGGING_LEFT(向左拖动)
STATE_DRAGGING_RIGHT(向右拖动)
STATE_DRAGGING_TOP(向上拖动)
STATE_DRAGGING_BOTTOM(向下拖动)
STATE_SETTLING_LEFT(向左调整)
STATE_SETTLING_RIGHT(向右调整)
STATE_SETTLING_TOP(向上调整)
STATE_SETTLING_BOTTOM(向下调整)
setOnItemSelectedListener(SelectedListener listener) 设置子View被选中的监听
getSelectedChild() 获取当前选中的子View
setAutoScrollEnable(boolean enable) 设置是否开启自动轮播 (默认: false)
setAutoScrollInterval(long interval) 设置自动轮播的间隔 (默认: 5000 ms)
setAutoScrollOrientation(int orientation) 设置自动轮播的方向(默认: SCROLL_ORIENTATION_LEFT):
SCROLL_ORIENTATION_LEFT(向左滚动)
SCROLL_ORIENTATION_RIGHT(向右滚动)
SCROLL_ORIENTATION_UP(向上滚动)
SCROLL_ORIENTATION_DOWN(向下滚动)
setAdapter(Adapter adapter) 使用Adapter来添加子View(见下)

Attributes:

Name Format Description
orientation enum (默认: horizontal)
horizontal(水平)
vertical(垂直)
滑动方向
flingDuration integer 动画时长
topScale float (默认: 1) 顶层缩放比例
topAlpha float (默认: 1) 顶层不透明度
middleScale float (默认: 0.8) 中层缩放比例
middleAlpha float (默认: 0.4) 中层不透明度
bottomScale float (默认: 0.6) 底层缩放比例
bottomAlpha float (默认: 0.2) 底层不透明度
autoScroll boolean (默认: false) 是否开启自动轮播
autoScrollInterval float (默认: 5000) 自动轮播的间隔
autoScrollOrientation enum (默认: left)
left(向左滚动)
right(向右滚动)
up(向上滚动)
down(向下滚动)
自动轮播的方向

添加子View方式:

1. XML

    <com.wuyr.litepager.LitePager
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <View
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:background="#F00" />

        <View
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:background="#0F0"/>

        <View
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:background="#00F"/>
    </com.wuyr.litepager.LitePager>

2. 批量添加

    LitePager litePager = ...;
    View child1 = ...;
    View child2 = ...;
    View child3 = ...;

    litePager.addViews(child1, child2, child3);

3. 通过布局添加

    litePager.addViews(
        R.layout.view_child1 
        R.layout.view_child2,
        R.layout.view_child3
    );

4. 设置适配器

示例: Item布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="250dp"
    android:background="@color/colorPrimary">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="30sp" />
</FrameLayout>

Java代码:

litePager.setAdapter(new Adapter<ViewGroup>() {

    private List<String> mData = new ArrayList<>(Arrays.asList("Item 1", "Item2", "Item3"));

    @Override
    protected ViewGroup onCreateView(@NonNull ViewGroup parent) {
        return (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
    }

    @Override
    protected void onBindView(@NonNull ViewGroup viewGroup, int position) {
        TextView textView = viewGroup.findViewById(R.id.text);
        textView.setText(mData.get(position));
    }

    @Override
    protected int getItemCount() {
        return mData.size();
    }
});

Demo下载: app-debug.apk

库源码地址: https://github.com/Ifxcyr/LitePager

效果 (图1为网易云原效果):

preview preview preview preview

More Repositories

1

PathLayoutManager

RecyclerView的LayoutManager,轻松实现各种炫酷、特殊效果,再也不怕产品经理为难!
Java
2,036
star
2

GoogleLibraryVersionQuerier

一款Android Studio插件,帮助你快速添加依赖库和查询历史版本
Kotlin
1,196
star
3

intellij-media-player

【🐟摸鱼专用】上班偷偷看视频📺而不会被老板打🔨的IDE插件,适配JetBrains全家桶
Kotlin
582
star
4

RippleAnimation

仿酷安客户端的主题切换动画效果
Java
392
star
5

HookwormForAndroid

一个基于Magisk&Riru的Module,可以助你用超低成本开发各种Hook插件,无须Xposed
Kotlin
325
star
6

RandomDragLayout

任意拖布局 (扩展自QQ空间的列表Header效果)
Java
222
star
7

SecondFloorBehavior

通过自定义Behavior实现“二楼”效果,兼容所有下拉刷新控件
Kotlin
191
star
8

ArcSlidingHelper

Android弧形滑动辅助 (使用超简单)
Java
168
star
9

CatchPiggy

捉小猪是一款很有趣的Android休闲小游戏
Java
168
star
10

PathView

仿BiliBili客户端聊天弹幕室线条动画效果
Java
161
star
11

incremental-compiler

适用于Android项目的Gradle插件,用来增量编译class和生成增量dex。跟自带的增量编译Task(assemble)的区别是:这个插件只会编译源文件,不做其他多余的动作
Kotlin
128
star
12

FanLayout

可定制性超强的圆弧滑动组件
Java
127
star
13

ArrowDrawable

纯Paint实现的一个射箭效果,可用作Loading动画。
Kotlin
114
star
14

CoffeeDrawable

纯Paint实现的一个搅拌咖啡效果,可用作Loading动画。
Kotlin
93
star
15

HexagramDecoder

易经64卦编解码
Kotlin
84
star
16

HideImageMaker

制作隐藏图片(幻影坦克)
Java
84
star
17

ActivityMessenger

ActivityMessenger,借助Kotlin特性,简化Activity之间传参和回调的逻辑代码。
Kotlin
55
star
18

CanvasX

脱离Android模拟器,在Java程序中使用Android下的Canvas、Paint、Bitmap等Graphics类(提取自Android Studio)
Java
39
star
19

HookwormForWanAndroidTest

HookwormForAndroid实战示例
Kotlin
33
star
20

jdwp-injector-for-android

借助adb协议+jdwp协议在Android端实现基于debugger的代码注入工具
Kotlin
32
star
21

DMifier

适用于Android项目的IDEA插件,用来自动生成DexMaker代码,类似『ASM Bytecode Viewer』
Kotlin
28
star
22

CoffinLayout

仿燃兔APP的游戏详情界面
Java
23
star
23

agent-injector-for-android

基于JVMTI实现的Android端动态代码注入工具
C
10
star
24

PatternPasswordViewer

root权限查看手机九宫格密码
Java
7
star
25

wuyr.github.io

CSS
2
star