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