圆角简单设置和recyclerView的大体使用

设置圆角
Glide.with(context).applyDefaultRequestOptions(RequestOptions.bitmapTransform(new RoundedCorners(30))).load(list.get(i).getA()).into(myRecycler.imageView);

recyclerView的操做和listView有些相同
先导入依赖
implementation ‘com.android.support:recyclerview-v7:28.0.0’
三种recyclerView布局方式分别为《listView 式,GridView网格式 瀑布式》
LinearLayoutManager manager=new LinearLayoutManager(this);//传入上下文
GridLayoutManager manager1=new GridLayoutManager(this,2);//第一个上下文,第二个几列
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);//第一个参数几列,第二个垂直形式

需要注意recyclerView添加适配后必须设置布局类型,否则无效果

recyclerView.setLayoutManager(布局样式)//最后添加到recyclerView中;

一下代码均为适配器操做
MyHolder extends RecyclerView.Adapter<MyHolder.MyViewHolder> {//泛型自定义的
private Context context;
private List<Bean.DataBean>list;

public MyHolder(Context context, List<Bean.DataBean> list) {
    this.context = context;
    this.list = list;
}

//创建
@NonNull
@Override
public Mythreads onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_bai, null);//TODo 瀑布布局填充器root必须为null
return new Mythreads(view);
}
//绑定
@Override
public void onBindViewHolder(@NonNull Mythreads mythreads, final int i) {
mythreads.textView.setText(list.get(i).getName());
Glide.with(context).load(list.get(i).getImage1()).into(mythreads.imageView1);
RequestOptions requestOptions=new RequestOptions();
requestOptions.circleCrop();
Glide.with(context).load(list.get(i).getProfile_image()).apply(requestOptions).into(mythreads.imageView2);
mythreads.itemView.setOnLongClickListener(new View.OnLongClickListener() {//接口回调
@Override
public boolean onLongClick(View v) {
mythreasd.longs(i);
return true;
}
});

}

//数量
@Override
public int getItemCount() {
return list.size();
}

class MyViewHolder   extends RecyclerView.ViewHolder{

TextView textView;
ImageView imageView1,imageView2;

    public Mythreads(@NonNull View itemView) {
        super(itemView);
        textView=itemView.findViewById(R.id.text_li);
        imageView1=itemView.findViewById(R.id.mv1);
     imageView2=itemView.findViewById(R.id.mv2);
     //随即图片高度
        ViewGroup.LayoutParams layoutParams = imageView1.getLayoutParams();
        int a=(int)(Math.random()*(500-100+1)+100);//TODO 大数减小数加以外再加小数
        layoutParams.height=a;

    }
}
Mythreasd mythreasd;//接口

public void setMythreasd(Mythreasd mythreasd) {
    this.mythreasd = mythreasd;
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android RecyclerView 的头部和尾部设置圆角,可以使用 ItemDecoration。具体的实现步骤如下: 1. 创建自定义的 ItemDecoration 类,并在该类的构造函数中传入圆角半径大小等参数。 2. 在该类的 `onDraw()` 方法中,使用 `Canvas` 和 `Paint` 对象绘制圆角矩形。可以通过 `getItemOffsets()` 方法来设置矩形的偏移量,以避免覆盖到 RecyclerView 的内容。 3. 在 RecyclerView 的 Adapter 类中,判断当前的 position 是否为头部或尾部,如果是,则在 `onCreateViewHolder()` 方法中设置对应的圆角布局。 以下是示例代码: ```java public class MyItemDecoration extends RecyclerView.ItemDecoration { private int radius; // 圆角半径 private int padding; // 矩形偏移量 public MyItemDecoration(int radius, int padding) { this.radius = radius; this.padding = padding; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); if (parent.getChildAdapterPosition(view) == 0) { // 头部 outRect.top = padding; } else if (parent.getChildAdapterPosition(view) == parent.getAdapter().getItemCount() - 1) { // 尾部 outRect.bottom = padding; } } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { View child = parent.getChildAt(i); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); int left = child.getLeft() + params.leftMargin; int right = child.getRight() - params.rightMargin; int top = child.getTop() + params.topMargin; int bottom = child.getBottom() - params.bottomMargin; if (parent.getChildAdapterPosition(child) == 0) { // 头部 drawRoundRect(c, left, top, right, bottom + padding, radius, true, true, false, false); } else if (parent.getChildAdapterPosition(child) == parent.getAdapter().getItemCount() - 1) { // 尾部 drawRoundRect(c, left, top - padding, right, bottom, radius, false, false, true, true); } } } // 绘制圆角矩形 private void drawRoundRect(Canvas canvas, float left, float top, float right, float bottom, float radius, boolean tl, boolean tr, boolean bl, boolean br) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.FILL); Path path = new Path(); float[] radii = new float[8]; if (tl) { radii[0] = radius; radii[1] = radius; } if (tr) { radii[2] = radius; radii[3] = radius; } if (br) { radii[4] = radius; radii[5] = radius; } if (bl) { radii[6] = radius; radii[7] = radius; } path.addRoundRect(new RectF(left, top, right, bottom), radii, Path.Direction.CW); canvas.drawPath(path, paint); } } ``` 然后,在 RecyclerView 的 Adapter 中,可以根据 position 判断是否为头部或尾部,并设置对应的布局: ```java @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_HEADER) { // 头部 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_header, parent, false); return new HeaderViewHolder(view); } else if (viewType == TYPE_FOOTER) { // 尾部 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer, parent, false); return new FooterViewHolder(view); } else { // 正常的 Item View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_normal, parent, false); return new NormalViewHolder(view); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值