在app/build.gradle:
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
implementation 'com.yarolegovich:discrete-scrollview:1.4.9'在我的代码片段中:
private void initSlider() {
List<String> serviceUrls = new ArrayList<String>();
serviceUrls.add("http://www.gravatar.com/avatar/44444?s=48x48&d=identicon");
serviceUrls.add("http://www.gravatar.com/avatar/33333?s=48x48&d=identicon");
serviceUrls.add("http://www.gravatar.com/avatar/11111?s=48x48&d=identicon");
serviceUrls.add("http://www.gravatar.com/avatar/22222?s=48x48&d=identicon");
DiscreteScrollView scrollView = findViewById(R.id.picker);
InfiniteScrollAdapter wrapper = InfiniteScrollAdapter.wrap(new AgentServiceAdapter(serviceUrls));
scrollView.setAdapter(wrapper);
scrollView.setSlideOnFling(true);
}在xml中
<com.yarolegovich.discretescrollview.DiscreteScrollView
android:id="@+id/picker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dsv_orientation="horizontal" />因此,它会显示图像,并通过水平滑动滚动图像。好的。这是工作。但我需要在显示scrooView时自动开始水平滚动。
有可能吗?
发布于 2019-09-21 05:09:28
您可以通过使用带计时器的处理程序来安排对scrollView.smoothScrollToPosition(positon)的调用。
int NUM_TOTAL_ITEMS = itemList.size(); // you can use itemView.getPosition()
int position = 0;
final Runnable r = new Runnable() {
public void run() {
handler.postDelayed(this, 1000);
if (position == NUM_TOTAL_ITEMS - 1) {
position = 0;
}
scrollView.smoothScrollToPosition(positon);
position++;
}
};发布于 2019-09-21 16:00:01
我找到了这个解决方案:
private DiscreteScrollView discreteScrollView;
private Handler timerHandler = new Handler();
private Runnable timerRunnable;
timerRunnable = new Runnable() {
@Override
public void run() {
discreteScrollView.smoothScrollBy(5, 0); // 5 is how many pixels you want it to scroll horizontally by
timerHandler.postDelayed(this, 10); // 10 is how many milliseconds you want this thread to run
}
};
timerHandler.postDelayed(timerRunnable, 0);发布于 2020-12-17 19:09:39
a_subscriber answer中的一些修改。他的解决方案是不断移动,我为1个项目添加了移动,然后停止,然后移动。您可以根据需要进行更改。
var delay = 100L
val displayMetrics = DisplayMetrics()
activity!!.windowManager.defaultDisplay.getMetrics(displayMetrics)
val height: Int = displayMetrics.heightPixels
var width= displayMetrics.widthPixels
var pixelPersentage= (width*0.05).roundToInt()
width -= pixelPersentage * 4
var pixel=pixelPersentage
try {
timerRunnable = object : Runnable {
override fun run() {
try {
if(pixel>width){
delay=3000
pixel=widthPers
}
else {
pixel += widthPers
delay=100
}
sliderLayout.smoothScrollBy(
pixelPersentage,
0
)
timerHandler.postDelayed(
this,
delay
)
} catch (e: Exception) {
}
}
}
timerHandler.postDelayed(timerRunnable, 3000)
} catch (e: Exception) {
}https://stackoverflow.com/questions/58032201
复制相似问题