亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

android畫廊效果怎么實現

小億
114
2024-08-12 13:46:42
欄目: 編程語言

要實現類似于Android畫廊效果,可以使用RecyclerView和ViewPager組合來實現。

  1. 首先,創建一個包含RecyclerView和ViewPager的布局文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>
  1. 創建一個自定義的RecyclerView.Adapter來填充RecyclerView的數據。
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
    private List<Drawable> images;

    public GalleryAdapter(List<Drawable> images) {
        this.images = images;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_gallery, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.image.setImageDrawable(images.get(position));
    }

    @Override
    public int getItemCount() {
        return images.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView image;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.imageView);
        }
    }
}
  1. 創建一個自定義的ViewPager.Adapter來填充ViewPager的數據。
public class ViewPagerAdapter extends PagerAdapter {
    private List<Drawable> images;

    public ViewPagerAdapter(List<Drawable> images) {
        this.images = images;
    }

    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = new ImageView(container.getContext());
        imageView.setImageDrawable(images.get(position));
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}
  1. 在Activity中初始化RecyclerView和ViewPager,設置Adapter并填充數據。
public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);
        viewPager = findViewById(R.id.viewPager);

        List<Drawable> images = new ArrayList<>();
        images.add(getDrawable(R.drawable.image1));
        images.add(getDrawable(R.drawable.image2));
        images.add(getDrawable(R.drawable.image3));

        GalleryAdapter galleryAdapter = new GalleryAdapter(images);
        recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
        recyclerView.setAdapter(galleryAdapter);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(images);
        viewPager.setAdapter(viewPagerAdapter);
    }
}

通過以上步驟,即可實現類似于Android畫廊效果的功能。RecyclerView用于顯示縮略圖列表,ViewPager用于顯示大圖。可以根據需求自定義布局和樣式來實現更豐富的效果。

0
河南省| 高州市| 三都| 大城县| 玉溪市| 潢川县| 上高县| 新化县| 双鸭山市| 高阳县| 五指山市| 邓州市| 大荔县| 金平| 米林县| 瑞昌市| 南投市| 工布江达县| 西藏| 海兴县| 屏东市| 陇南市| 永济市| 峨山| 伊吾县| 施秉县| 永州市| 临颍县| 温州市| 吉木萨尔县| 资溪县| 清水河县| 乡宁县| 阳原县| 晋宁县| 寿宁县| 客服| 天门市| 叶城县| 滨海县| 古丈县|