学习Android的第十七天

语言: CN / TW / HK

theme: smartblue

「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

前言

前几天我们一直在照着已经上线的项目仿写,相信你已经积累了不少经验,也遇到了不少bug,相信自己,相信百度,学习就是摸爬滚打的过程,特别是一个你完全都不熟悉的领域,加油吧!!!今天我们依旧是仿写一个已经上线谷歌商店的项目,继续提升我们的实战经验

先看看效果吧

image.png

我们可以很明显的看到,这是一个recyclerview,下面就是一个签到的按钮,好啦开始撸代码吧

code

老样子还是xml走起

```

<TextView
//很明显这个是个titleTextView
//资源id'
    android:id="@+id/tv_title"
    //宽高自适应即可
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    //距离上下左右15dp
    android:layout_margin="15dp"
    //默认文本
    android:text="每日签到"
    //字体颜色
    android:textColor="@color/black"
    //字体风格,加粗
    android:textStyle="bold"
    //约束条件
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

//下面的签到天数

//下面的签到

```

Activity

``` private ConstraintLayout mLayout; private TextView mTvTitle; private RecyclerView mRv; private TextView mTvCheck;

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

private void initView() { //初始化控件 mLayout = findViewById(R.id.layout); mTvTitle = findViewById(R.id.tv_title); mRv = findViewById(R.id.rv); mTvCheck = findViewById(R.id.tv_check);

//为签到设置背景,圆角50,颜色随便 mTvCheck.setBackground(MyShape.setMyShape(this,50, ContextCompat.getColor(this,R.color.teal_200)));

//为recyclerview设置布局管理器,线性布局管理器,横向,不反转 mRv.setLayoutManager(new LinearLayoutManager(this,RecyclerView.HORIZONTAL,false)); //创建recyclerview的适配器,我们用内部的holder确定天数即可 TaskAdapter taskAdapter = new TaskAdapter(this); //设置适配器 mRv.setAdapter(taskAdapter); } `Adapter` //适配器必须继承自recyclerview.Adapter public class TaskAdapter extends RecyclerView.Adapter {

private final Context context;

//构造函数,传递一个上下文即可 public TaskAdapter(Context context) {

    this.context = context;
}

@NonNull
@NotNull
@Override
public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
//加载布局
    View root = LayoutInflater.from(context).inflate(R.layout.item_task, parent, false);
    //传递给ViewHolder
    return new ViewHolder(root);
}

//绑定布局 @Override public void onBindViewHolder(@NonNull @NotNull TaskAdapter.ViewHolder holder, int position) { //如果下标大于0,我们就重新为item中的天数textview赋值 if (position > 0) { //数据为当前position+1 holder.tv_day.setText("Day" + (position+1)); } //为第一个小模块设置圆角+背景,原角度数4,北京随便 holder.item_layout1.setBackground(MyShape.setMyShape(context,4, ContextCompat.getColor(context,R.color.teal_700))); }

@Override
public int getItemCount() {
//默认7个
    return 7;
}

public class ViewHolder extends RecyclerView.ViewHolder {

    private final TextView tv_day;
    private final ConstraintLayout item_layout1;

    public ViewHolder(@NonNull @NotNull View itemView) {
        super(itemView);
        tv_day = itemView.findViewById(R.id.item_tv_day);
        item_layout1 = itemView.findViewById(R.id.item_layout1);
    }
}

} ```

我们来看看效果

image.png

哇~金色传说!!!