package com.zhw.autorecycler.java;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import android.os.Bundle;
import android.util.DisplayMetrics;
import com.zhw.autorecycler.R;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
public class MainActivity extends AppCompatActivity {
private AutoScrollRecyclerView mRv;
private AutoScrollRecyclerView mRv1;
private NoticeRecyclerViewAdapter mAdapter;
private List<String> data = new ArrayList<>();
private LinearSmoothScroller smoothScroller;
private Disposable mAutoTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initData() {
for (int i = 0; i < 10; i++) {
data.add("测试机" + i);
}
}
private void initView() {
mRv = findViewById(R.id.am_rv);
mRv1 = findViewById(R.id.am_rv1);
initData();
mAdapter = new NoticeRecyclerViewAdapter(data);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
mRv.setLayoutManager(layoutManager);
mRv.addItemDecoration(decoration);
mRv.setAdapter(mAdapter);
mRv1.setLayoutManager(layoutManager);
mRv1.addItemDecoration(decoration);
mRv1.setAdapter(mAdapter);
// 自定义LinearSmoothScroller,重写方法,滚动item至顶部,控制滚动速度
smoothScroller = new LinearSmoothScroller(this) {
//将移动的置顶显示
@Override
protected int getVerticalSnapPreference() {
return LinearSmoothScroller.SNAP_TO_START;
}
//控制速度,这里注意当速度过慢的时候可能会形成流式的效果,因为这里是代表移动像素的速度,
// 当定时器中每隔的2秒之内正好或者还未移动一个item的高度的时候会出现,前一个还没移动完成又继续移动下一个了,就形成了流滚动的效果了
// 这个问题后续可通过重写另外一个方法来进行控制,暂时就先这样了
@Override
protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
return 3f / displayMetrics.density;
}
};
}
// 设置定时器自动滚动
public void startAuto() {
if (mAutoTask != null && !mAutoTask.isDisposed()) {
mAutoTask.dispose();
}
mAutoTask = Observable.interval(500, 200, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
//滚动到指定Item
smoothScroller.setTargetPosition(aLong.intValue());
mRv.getLayoutManager().startSmoothScroll(smoothScroller);
}
});
}
private void stopAuto() {
if (mAutoTask != null && !mAutoTask.isDisposed()) {
mAutoTask.dispose();
mAutoTask = null;
}
}
@Override
protected void onStop() {
super.onStop();
//item滚动步骤3:开始滚动
startAuto();
//流式滚动效果
mRv1.start();
}
@Override
protected void onStart() {
super.onStart();
//item滚动步骤4:结束滚动
stopAuto();
mRv1.stop();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
RecycleVIew自动循环滚动使用
共117个文件
xml:72个
png:10个
properties:6个
需积分: 1 0 下载量 117 浏览量
2022-03-02
10:16:16
上传
评论
收藏 209KB ZIP 举报
温馨提示
RecycleVIew自动循环滚动使用
资源详情
资源评论
资源推荐
收起资源包目录
RecycleVIew自动循环滚动使用 (117个子文件)
gradlew.bat 2KB
outputFiles.bin 58KB
sha1-checksums.bin 22KB
md5-checksums.bin 18KB
last-build.bin 1B
.gitignore 225B
.gitignore 6B
.gitignore 0B
build.gradle 1KB
build.gradle 1KB
settings.gradle 48B
gradlew 5KB
AutoRecycler.app.iml 14KB
AutoRecycler.iml 1010B
gradle-wrapper.jar 53KB
MainActivity.java 4KB
AutoScrollRecyclerView.java 2KB
NoticeRecyclerViewAdapter.java 1KB
ExampleInstrumentedTest.java 754B
ExampleUnitTest.java 381B
Main2Activity.kt 3KB
AutoScrollRecyclerView.kt 1KB
NoticeRecyclerViewAdapter.kt 1KB
executionHistory.lock 17B
checksums.lock 17B
fileHashes.lock 17B
buildOutputCleanup.lock 17B
ic_launcher_round.png 16KB
ic_launcher_round.png 12KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher_round.png 7KB
ic_launcher_round.png 5KB
ic_launcher.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 3KB
ic_launcher.png 3KB
proguard-rules.pro 750B
gradle.properties 1KB
local.properties 433B
gradle-wrapper.properties 230B
cache.properties 49B
gc.properties 0B
gc.properties 0B
build_file_checksums.ser 531B
workspace.xml 9KB
ic_launcher_background.xml 5KB
jarRepositories.xml 2KB
ic_launcher_foreground.xml 2KB
activity_main.xml 2KB
Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml 1KB
Gradle__io_reactivex_rxjava2_rxandroid_2_0_2_aar.xml 1KB
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1KB
Gradle__androidx_test_ext_junit_1_1_1_aar.xml 1KB
Gradle__androidx_fragment_fragment_1_1_0_aar.xml 1KB
Gradle__androidx_test_core_1_2_0_aar.xml 1KB
Gradle__androidx_test_monitor_1_2_0_aar.xml 1KB
Gradle__androidx_test_runner_1_2_0_aar.xml 1KB
Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml 1KB
Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml 1KB
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 1KB
Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml 1KB
Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml 1KB
Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml 1KB
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml 1KB
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 1KB
Gradle__com_google_android_material_material_1_1_0_aar.xml 1KB
Gradle__androidx_transition_transition_1_2_0_aar.xml 1KB
Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml 1KB
Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml 1KB
Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml 1KB
Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml 1KB
Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 1KB
Gradle__androidx_activity_activity_1_0_0_aar.xml 1KB
Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 1KB
Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 1KB
Gradle__androidx_customview_customview_1_0_0_aar.xml 1020B
Gradle__androidx_core_core_1_1_0_aar.xml 1016B
Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml 1011B
Gradle__androidx_loader_loader_1_0_0_aar.xml 984B
Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml 951B
gradle.xml 947B
Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_72.xml 899B
Gradle__androidx_cardview_cardview_1_0_0_aar.xml 856B
Gradle__org_reactivestreams_reactive_streams_1_0_2.xml 839B
themes.xml 834B
themes.xml 834B
Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_72.xml 829B
Gradle__org_hamcrest_hamcrest_integration_1_3.xml 825B
Gradle__androidx_annotation_annotation_1_1_0.xml 797B
AndroidManifest.xml 796B
Gradle__org_hamcrest_hamcrest_library_1_3.xml 796B
Gradle__io_reactivex_rxjava2_rxjava_2_1_16.xml 780B
Gradle__org_hamcrest_hamcrest_core_1_3.xml 776B
Gradle__org_jetbrains_annotations_13_0.xml 773B
Gradle__com_squareup_javawriter_2_1_1.xml 769B
Gradle__javax_inject_javax_inject_1.xml 755B
Gradle__net_sf_kxml_kxml2_2_3_0.xml 730B
共 117 条
- 1
- 2
zh刺客
- 粉丝: 21
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0