如何在motionlayout中为carousel设置Adapter
How to setAdapter for carousel in motionlayout
我正在为此开发一个应用程序,我使用带有图像滑块运动布局的旋转木马,但我无法填充旋转木马。
而且我无法设置转盘的适配器如何用图像或数据填充它。
一旦创建了这个基本的运动场景,我们只需要向布局添加一个 Carousel 助手并引用这些视图(按照我们实现 previous/next 动画的相同顺序)。
这是 XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<!-- activity_main.xml -->
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layoutDescription="@xml/activity_product_view_3d_scene">
<ImageView android:id="@+id/imageView0"
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/nature2"/>
<ImageView android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/nature1"/>
<ImageView android:id="@+id/imageView2"
android:layout_width="match_parent"
android:src="@drawable/nature"
android:layout_height="400dp" />
<androidx.constraintlayout.helper.widget.Carousel
android:id="@+id/carousel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:carousel_forwardTransition="@+id/forward"
app:carousel_backwardTransition="@+id/backward"
app:carousel_previousState="@+id/previous"
app:carousel_nextState="@+id/next"
app:carousel_infinite="true"
app:carousel_firstView="@+id/imageView2"
app:constraint_referenced_ids="imageView0,imageView1" />
</androidx.constraintlayout.motion.widget.MotionLayout>
这是动态场景文件。
<?xml version="1.0" encoding="utf-8"?>
<MotionScene
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetStart="@id/start"
motion:constraintSetEnd="@+id/next"
motion:duration="1000"
android:id="@+id/forward">
<OnSwipe
motion:dragDirection="dragLeft"
motion:touchAnchorSide="left" />
</Transition>
<Transition
motion:constraintSetStart="@+id/start"
motion:constraintSetEnd="@+id/previous"
android:id="@+id/backward">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorSide="right" />
</Transition>
</MotionScene>
这是.java文件。
public class ProductView_3d extends AppCompatActivity {
Carousel carousel;
int [] images = {R.drawable.nature1, R.drawable.nature, R.drawable.nature2};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_view_3d);
carousel = findViewById(R.id.carousel);
carousel.setAdapter(new Carousel.Adapter() {
@Override
public int count() {
return images.length;
}
**@Override
public void populate(View view, int index){
}**
@Override
public void onNewItem(int index) {
}
});
}
}
我是根据androidlink here
的官方文档实现的
但是我无法填充轮播有人能帮忙吗?
提前致谢。
应该像添加一样简单
((ImageView)view).setImageResource(images[index]);
至
public void populate(View view, int index){
}
我正在为此开发一个应用程序,我使用带有图像滑块运动布局的旋转木马,但我无法填充旋转木马。 而且我无法设置转盘的适配器如何用图像或数据填充它。
一旦创建了这个基本的运动场景,我们只需要向布局添加一个 Carousel 助手并引用这些视图(按照我们实现 previous/next 动画的相同顺序)。
这是 XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<!-- activity_main.xml -->
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layoutDescription="@xml/activity_product_view_3d_scene">
<ImageView android:id="@+id/imageView0"
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/nature2"/>
<ImageView android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/nature1"/>
<ImageView android:id="@+id/imageView2"
android:layout_width="match_parent"
android:src="@drawable/nature"
android:layout_height="400dp" />
<androidx.constraintlayout.helper.widget.Carousel
android:id="@+id/carousel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:carousel_forwardTransition="@+id/forward"
app:carousel_backwardTransition="@+id/backward"
app:carousel_previousState="@+id/previous"
app:carousel_nextState="@+id/next"
app:carousel_infinite="true"
app:carousel_firstView="@+id/imageView2"
app:constraint_referenced_ids="imageView0,imageView1" />
</androidx.constraintlayout.motion.widget.MotionLayout>
这是动态场景文件。
<?xml version="1.0" encoding="utf-8"?>
<MotionScene
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetStart="@id/start"
motion:constraintSetEnd="@+id/next"
motion:duration="1000"
android:id="@+id/forward">
<OnSwipe
motion:dragDirection="dragLeft"
motion:touchAnchorSide="left" />
</Transition>
<Transition
motion:constraintSetStart="@+id/start"
motion:constraintSetEnd="@+id/previous"
android:id="@+id/backward">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorSide="right" />
</Transition>
</MotionScene>
这是.java文件。
public class ProductView_3d extends AppCompatActivity {
Carousel carousel;
int [] images = {R.drawable.nature1, R.drawable.nature, R.drawable.nature2};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_view_3d);
carousel = findViewById(R.id.carousel);
carousel.setAdapter(new Carousel.Adapter() {
@Override
public int count() {
return images.length;
}
**@Override
public void populate(View view, int index){
}**
@Override
public void onNewItem(int index) {
}
});
}
}
我是根据androidlink here
的官方文档实现的但是我无法填充轮播有人能帮忙吗? 提前致谢。
应该像添加一样简单
((ImageView)view).setImageResource(images[index]);
至
public void populate(View view, int index){
}