學習Android的第十七天
theme: smartblue
「這是我參與11月更文挑戰的第17天,活動詳情查看:2021最後一次更文挑戰」
前言
前幾天我們一直在照着已經上線的項目仿寫,相信你已經積累了不少經驗,也遇到了不少bug,相信自己,相信百度,學習就是摸爬滾打的過程,特別是一個你完全都不熟悉的領域,加油吧!!!今天我們依舊是仿寫一個已經上線谷歌商店的項目,繼續提升我們的實戰經驗
先看看效果吧
我們可以很明顯的看到,這是一個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);
}
}
} ```
我們來看看效果
哇~金色傳説!!!
- 學習Android的第十七天
- 這是一個吸貓文章的標題,甚至可以有兩行這麼多哦
- 學習Android的第四天
- 學習Android的第一天
- 含有邊框的TextView-Android
- 電池-Android
- 倒計時封裝-Android
- 標題和狀態欄滑動漸變(2)-Android
- 標題和狀態欄滑動漸變(1)-Android
- 關於選項卡三方庫FlycoTabLayout的使用及修改
- 關於第三方庫SmartTabLayout的一點小修改
- 關於遞歸反轉鏈表的思路
- 搜索歷史記錄的實現-Android
- 感覺讓人耳目一新的動畫庫Lottie
- Android-關於設備唯一ID的奇技淫巧
- 稍微巧妙的雙模塊聯動-ViewPager
- 動畫庫NineOldAndroids實戰自定義懸浮窗
- 關於項目中圓角及特殊圓角的實際使用問題
- 自定義TextView可控制Drawable大小