學習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

哇~金色傳説!!!