0
点赞
收藏
分享

微信扫一扫

Android 画廊效果


Android 画廊效果_ide

implementation 'com.azoft.carousellayoutmanager:carousel:1.2.1'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'

ImageAdapter

package com.lanyu.clockstore.adapter;

import androidx.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.lanyu.clockstore.R;

import java.util.HashMap;
import java.util.List;

public class ImageAdapter extends BaseQuickAdapter<HashMap<String, String>, BaseViewHolder> {


public ImageAdapter(@Nullable List<HashMap<String, String>> data) {
super(R.layout.item_img, data);
}


@Override
protected void convert(BaseViewHolder helper, HashMap<String, String> item) {
helper.setText(R.id.item_name, item.get("name"));
// helper.setImageBitmap(R.id.iv_img, item.get("name"));

}
}

MainActivity

package com.lanyu.clockstore;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.azoft.carousellayoutmanager.CarouselLayoutManager;
import com.azoft.carousellayoutmanager.CarouselZoomPostLayoutListener;
import com.azoft.carousellayoutmanager.CenterScrollListener;
import com.azoft.carousellayoutmanager.DefaultChildSelectionListener;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.lanyu.clockstore.adapter.ImageAdapter;
import com.lanyu.clockstore.base.BaseActivity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class MainActivity extends BaseActivity {
private String[] names = {"德玛西亚", "盖伦", "今日讲解", "今日说法", "宋朝那些事", "王者荣耀", "优酷牛人", "天下第一哦", "红楼梦"};

RecyclerView recyclerView;
ImageAdapter adapter;
List<HashMap<String, String>> adapterList = new ArrayList<>();
private int currentPosition = -1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initViews();
}

@Override
public int initLayoutId() {
return R.layout.activity_main;
}


void initViews() {
for (int i = 0; i < 5; i++) {
HashMap<String, String> map = new HashMap<>();
map.put("name", names[i]);
adapterList.add(map);
}
recyclerView = findViewById(R.id.recycle);
adapter = new ImageAdapter(adapterList);
//使用方法和普通的LayoutManager一样
CarouselLayoutManager layoutManager = new CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL);
layoutManager.setPostLayoutListener(new CarouselZoomPostLayoutListener());
//这个是设置除了中间最大的子view外,两边最多能显示的子view的个数
layoutManager.setMaxVisibleItems(2);
//设置item的滑动监听,返回当前滑动到的某一项(最大的那一项)
layoutManager.addOnItemSelectionListener(new CarouselLayoutManager.OnCenterItemSelectionListener() {
@Override
public void onCenterItemChanged(int adapterPosition) {
currentPosition = adapterPosition;
Log.d("Main2Activity", "onCenterItemChanged: -----" + adapterPosition + adapterList.get(adapterPosition).get("name"));
}
});
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new CenterScrollListener());
//设置这个主要是为了好看,使数据默认居中(可以在第一次显示数据时使用)
recyclerView.scrollToPosition(adapterList.size() / 2);
//设置item的点击
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
if (position == currentPosition) {
Log.d("Main2Activity", "onItemClick: --------相同");

} else {
Log.d("Main2Activity", "onItemClick: --------不是相同的不能操作" + position + "/n" + currentPosition);
}
}
});

/**
* 1.设置滚动到中间项的点击事件(可见的条目中,任意点击该条目,把该条目的位置设置为中间项)
* 2.响应中间项的点击事件
* 3.会与setOnItemClickListener产生冲突,造成OnItemClickListener无法无法响应
*/
DefaultChildSelectionListener.initCenterItemListener(new DefaultChildSelectionListener.OnCenterItemClickListener() {
@Override
public void onCenterItemClicked(@NonNull RecyclerView recyclerView, @NonNull CarouselLayoutManager carouselLayoutManager, @NonNull View v) {

final int intposition = recyclerView.getChildLayoutPosition(v);
Toast.makeText(MainActivity.this, "我是中间项" + intposition + "\n" + names[intposition], Toast.LENGTH_SHORT).show();

}
}, recyclerView, layoutManager);
}


}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="300dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

item_img.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="300dp"
android:layout_height="300dp"
card_view:cardCornerRadius="8dp"
card_view:cardElevation="5dp"
card_view:cardPreventCornerOverlap="true">

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="300dp"
android:background="#f0f">

<ImageView
android:id="@+id/item_img"
android:layout_width="300dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:background="#f52"
android:scaleType="centerCrop" />

<LinearLayout
android:layout_width="360dp"
android:layout_height="190dp"
android:layout_alignParentBottom="true"
android:orientation="vertical">

<TextView
android:id="@+id/item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="21dp"
android:gravity="center"
android:text="1111111111"
android:textColor="#666666" />

<TextView
android:id="@+id/item_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="17dp"
android:gravity="center"
android:text="1111111111"
android:textColor="#b1b1b1" />

<ImageView
android:id="@+id/item_start"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher" />
</LinearLayout>
</RelativeLayout>
</androidx.cardview.widget.CardView>


举报

相关推荐

0 条评论