Android 打卡按钮变星星效果实现教程
要实现打卡成功后变成星星的效果,你可以在打卡成功后,将打卡按钮的背景图片或图标更改为星星的图片或图标。具体的实现步骤如下:
-
在布局文件中,将打卡按钮的背景设置为一个 ImageView,并设置一个默认的背景图片(例如一个空白的按钮)。
-
在 Java 代码中,找到打卡按钮的 ImageView,并在打卡成功的点击事件中,将其背景图片更改为星星的图片。
以下是修改后的代码示例:
public class ClockActivity extends AppCompatActivity {
private TextView countdownTextView;
private CalendarView calendarView;
private ImageView checkInButton; // 将Button改为ImageView
private AppDatabase appDatabase;
private boolean isCheckIn = false; // 标记是否已打卡
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.oclock);
InitviewS();
countdownTextView = findViewById(R.id.countdownTextView);
calendarView = findViewById(R.id.calendarView);
checkInButton = findViewById(R.id.checkInButton); // 将Button改为ImageView
appDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "check-in-db")
.allowMainThreadQueries()
.build();
// 省略其他代码...
checkInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isCheckIn) { // 如果还未打卡
String currentDate = getCurrentDate();
String currentTime = getCurrentTime();
CheckIn checkIn = new CheckIn(currentDate, currentTime);
appDatabase.checkInDao().insert(checkIn);
Toast.makeText(com.example.pg_helper.ClockActivity.this, "打卡成功:" + currentDate + " " + currentTime, Toast.LENGTH_SHORT).show();
int checkInCount = appDatabase.checkInDao().getCheckInCount();
Toast.makeText(com.example.pg_helper.ClockActivity.this, "已打卡次数:" + checkInCount, Toast.LENGTH_SHORT).show();
checkInButton.setImageResource(R.drawable.star); // 将背景图片更改为星星图片
isCheckIn = true; // 标记已打卡
} else {
Toast.makeText(com.example.pg_helper.ClockActivity.this, "今天已经打过卡了!", Toast.LENGTH_SHORT).show();
}
}
});
// 省略其他代码...
}
// 省略其他方法...
}
在上述代码中,我添加了一个isCheckIn的 boolean 变量来标记是否已经打卡。在点击打卡按钮时,首先判断是否已经打卡,如果还未打卡,则执行打卡操作,并将背景图片更改为星星图片,并将isCheckIn标记为已打卡。如果已经打过卡,则弹出一个提示。
请注意,你需要将R.drawable.star替换为你自己的星星图片资源。另外,如果你想要在第二次打卡时恢复按钮的默认背景图片,你可以在合适的地方将isCheckIn重置为false。
原文地址: https://www.cveoy.top/t/topic/bO7q 著作权归作者所有。请勿转载和采集!