阿里android开发框架,Android开发使用阿里的UltraViewPager

元彦君
2023-12-01

OverView

今天在学习的过沉中尝试让ViewPager实现自动滚动,这个我之前写过,写划过博客,但是,我今天去使用它,发现我写的那个有带你无法满足我,所以我就直接使用了阿里开源的UltraViewPager,这玩意功能强大。

接下来让我们看一下如何使用它吧。

开发环境

Android Studio 3.5.3

启用 AndroidX

开发语言 JAVA

添加框架依赖

我们在APP的build.gradle添加

implementation ('com.alibaba.android:ultraviewpager:1.0.7.8'){

transitive = true

}

然后点击同步,这样我们的依赖就添加完成了!

看看如何使用它

按照国际惯例先看源代码:(布局文件)

android:id="@+id/my_UltraViewPager"

android:layout_width="match_parent"

android:layout_height="150dp"

android:layout_centerInParent="true"

android:layout_marginTop="10dp"

android:background="@color/white"

app:layout_constraintTop_toBottomOf="@+id/linearLayout3"

tools:layout_editor_absoluteX="5dp" />

这样我们的布局文件就创建完成了。

然后我们来看一下适配器:

package com.example.testandroid.Adpaters;

import android.view.View;

import android.view.ViewGroup;

import androidx.annotation.NonNull;

import androidx.viewpager.widget.PagerAdapter;

import java.util.ArrayList;

import java.util.List;

public class UltraPagerAdapter extends PagerAdapter {

private List listViews = new ArrayList<>();

public UltraPagerAdapter(List listViews) {

this.listViews = listViews;

}

@Override

public int getCount() {

return listViews.size();

}

@Override

public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {

return view == object;

}

@NonNull

@Override

public Object instantiateItem(@NonNull ViewGroup container, int position) {

container.addView(listViews.get(position));

return listViews.get(position);

}

@Override

public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

container.removeView(listViews.get(position));

}

}

这些就是适配器了。接着我们根据适配器源码来看一下。

我们的适配器继承了我们的PagerAdpter

然后我们创建了一个List 然后创建了我们的构造方法。

接下来的步骤和我们普通的PagerAdpater的方法是一样的。

这些都是比较简单的,然后让我么了看一下核心代码是啥样的。

核心代码区域

//init pagerView

View view1 = View.inflate(getApplicationContext(), R.layout.keep_my_view_pager1, null);

Typeface typeface1 = ResourcesCompat.getFont(this, R.font.texgyreadventor_bolditalic);

((TextView) view1.findViewById(R.id.view_title)).setTypeface(typeface1);

listView.add(view1);

View view2 = View.inflate(getApplicationContext(), R.layout.keep_my_view_pager2, null);

((TextView) view2.findViewById(R.id.view_title)).setTypeface(typeface1);

listView.add(view2);

ultraViewPager = findViewById(R.id.my_UltraViewPager);

ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL);

PagerAdapter adapter = new UltraPagerAdapter( listView);

ultraViewPager.setAdapter(adapter);

ultraViewPager.initIndicator();

ultraViewPager.getIndicator().setOrientation(UltraViewPager.Orientation.HORIZONTAL)

.setFocusColor(Color.GREEN)

.setNormalColor(Color.WHITE)

.setRadius((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, getResources().getDisplayMetrics()));

ultraViewPager.getIndicator().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);

ultraViewPager.getIndicator().build();

ultraViewPager.setInfiniteLoop(true);

ultraViewPager.setAutoScroll(2000);

这部分就是我们的UltraViewPager的核心区域了。

我们来好好的看一下:

首先我创建了两个View填充我们的控件。

然后我们实例化我们的控件,并且确定我们滚动提示图标的位置。

然后我们实例化我们的适配器,并且将他和控件绑定。

接着我们需要编写我们的initIndicator();这边又啥用了?

他就是显示我们的滚动提示圈的,

这里又几个属性需要注意一下,未选中的颜色,选中的颜色,和我们的大小。

这些创建完成后我们需要去固定小圈圈的位置。

然后就是是否开启我们的自动滚动,以及间隔时间。

 类似资料: