Я использовал один из примеров для 3D-карусели из 3D-Карусель . Также пробовал эту библиотеку Android-3D-Carousel , но вывод одинаков для обоих.
Проблема в том, что при выборе элемента не используется полная высота (высота переноса вида). Виден только один пиксель высоты. Также не тюк, чтобы получить этот вид в центре.
Текущий выход:
Ожидаетсявывод:
Код, используемый ниже:
Файл адаптера:
public final class MyAdapter
extends CarouselAdapter<Photo>
{
public static final class PhotoItem
extends CarouselItem<Photo>
{
private ImageView image;
private TextView name;
private Context context;
public PhotoItem(Context context)
{
super(context, R.layout.item);
this.context = context;
}
@Override
public void extractView(View view)
{
// image = (ImageView) view.findViewById(R.id.image);
//name = (TextView) view.findViewById(R.id.name);
}
@Override
public void update(Photo photo)
{
// image.setImageResource(getResources().getIdentifier(photo.image, "drawable", context.getPackageName()));
// name.setText(photo.name);
}
}
public MyAdapter(Context context, List<Photo> photos)
{
super(context, photos);
}
@Override
public CarouselItem<Photo> getCarouselItem(Context context)
{
return new PhotoItem(context);
}
}
Код файла активности:
public final class MainActivity
extends AppCompatActivity
implements OnItemClickListener, OnItemLongClickListener {
private CarouselAdapter adapter;
private Carousel carousel;
private final List<Photo> photos = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
carousel = (Carousel) findViewById(R.id.carousel);
photos.add(new Photo("Photo1", "fotolia_40649376"));
photos.add(new Photo("Photo2", "fotolia_40973414"));
photos.add(new Photo("Photo3", "fotolia_48275073"));
photos.add(new Photo("Photo4", "fotolia_50806609"));
adapter = new MyAdapter(this, photos);
carousel.setAdapter(adapter);
adapter.notifyDataSetChanged();
carousel.setSelection(0, true);
carousel.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(CarouselBaseAdapter<?> carouselBaseAdapter, View view, int position, long l) {
Toast.makeText(getApplicationContext(), "The item '" + position + "' has been clicked", Toast.LENGTH_SHORT).show();
carousel.scrollToChild(position);
}
});
carousel.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(CarouselBaseAdapter<?> carouselBaseAdapter, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "The item '" + position + "' has been long clicked", Toast.LENGTH_SHORT).show();
carousel.scrollToChild(position);
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuItem firstItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.activityStaticFragment);
firstItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(getApplicationContext(), SecondaryActivity.class));
return true;
}
});
final MenuItem secondItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.activityFragment);
secondItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(getApplicationContext(), ThirdActivity.class));
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
@Override
public void onItemClick(CarouselBaseAdapter<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "The item '" + position + "' has been clicked", Toast.LENGTH_SHORT).show();
carousel.scrollToChild(position);
}
@Override
public boolean onItemLongClick(CarouselBaseAdapter<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "The item '" + position + "' has been long clicked", Toast.LENGTH_SHORT).show();
carousel.scrollToChild(position);
return false;
}
}
Файл макета XML:
<?xml version="1.0" encoding="utf-8"?>
<fr.rolandl.carousel.Carousel xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/carousel"
android:layout_width="match_parent"
android:gravity="top" android:paddingTop="-200dp"
android:layout_height="match_parent"
android:background="@color/colorYellow"
android:animationDuration="200" />
Код файла элемента строки:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="-60dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="ACCIDENT"
android:textColor="@color/colorText"
android:textSize="@dimen/font_15" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="COMING SOON!"
android:textColor="@color/colorText"
android:textSize="@dimen/font_10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="980"
android:textColor="@color/colorText"
android:textSize="@dimen/font_21" />
</LinearLayout>
<LinearLayout
android:id="@+id/llMain"
android:layout_width="wrap_content"
android:layout_height="@dimen/margin_400"
android:layout_below="@+id/llTextView"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal|bottom"
android:orientation="vertical">
<ImageView
android:id="@+id/ivBox3"
android:layout_width="@dimen/margin_100"
android:layout_height="@dimen/margin_50"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/ic_stack_red_category" />
<ImageView
android:id="@+id/ivBox2"
android:layout_width="@dimen/margin_100"
android:layout_height="@dimen/margin_50"
android:layout_marginTop="-80dp"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/ic_stack_blue_category" />
<ImageView
android:id="@+id/ivBox1"
android:layout_width="@dimen/margin_100"
android:layout_height="@dimen/margin_50"
android:layout_marginTop="-80dp"
android:contentDescription="@string/app_name"
android:scaleType="fitXY"
android:src="@drawable/ic_stack_pink_category" />
<ImageView
android:id="@+id/lavProductAnimation"
android:layout_width="@dimen/margin_300"
android:layout_height="@dimen/margin_220"
android:layout_marginTop="-260dp"
android:contentDescription="@string/app_name"
android:src="@drawable/mascot1" />
</LinearLayout>
</RelativeLayout>
Пожалуйста, дайте мне знать, если вам нужен какой-либо другой код.
Спасибо!