SnapWall/app/src/main/java/com/snap/wall/activity/RateDialog.java
2025-12-26 14:12:53 +08:00

103 lines
3.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.snap.wall.activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Window;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.snap.wall.R;
public class RateDialog extends Dialog {
private ImageView star1, star2, star3, star4, star5;
private int selectedStars = 0;
private String packageName;
public RateDialog(@NonNull Context context) {
// 关键修改1指定透明主题避免系统默认背景干扰
super(context, android.R.style.Theme_Translucent_NoTitleBar);
this.packageName = context.getPackageName();
initView();
}
private void initView() {
setContentView(R.layout.activity_rate_dialog);
Window window = getWindow();
if (window != null) {
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
window.getDecorView().setPadding(0, 0, 0, 0);
window.setLayout(
(int) (getContext().getResources().getDisplayMetrics().widthPixels * 0.8),
android.view.WindowManager.LayoutParams.WRAP_CONTENT
);
}
// 可选修改:恢复点击外部可关闭弹窗,提升交互体验
setCanceledOnTouchOutside(true);
// 保留点击返回键可关闭弹窗默认true可显式声明
setCancelable(true);
// 绑定星级控件
star1 = findViewById(R.id.iv_star1);
star2 = findViewById(R.id.iv_star2);
star3 = findViewById(R.id.iv_star3);
star4 = findViewById(R.id.iv_star4);
star5 = findViewById(R.id.iv_star5);
// 星级点击事件(保留原有逻辑)
star1.setOnClickListener(v -> setStars(1));
star2.setOnClickListener(v -> setStars(2));
star3.setOnClickListener(v -> setStars(3));
star4.setOnClickListener(v -> setStars(4));
star5.setOnClickListener(v -> setStars(5));
// 取消按钮事件(保留原有逻辑)
findViewById(R.id.btn_cancel).setOnClickListener(v -> dismiss());
// 关键修改4完善评分按钮的跳转逻辑跳转到应用商店
findViewById(R.id.btn_rate).setOnClickListener(v -> {
if (selectedStars > 0) {
dismiss();
} else {
// 未选择星级时提示用户
Toast.makeText(getContext(), "Please select a star rating first!", Toast.LENGTH_SHORT).show();
}
});
}
// 星级选中逻辑(保留原有逻辑,无修改)
private void setStars(int count) {
selectedStars = count;
// 重置所有星级为未选中
star1.setImageResource(R.drawable.star_unselected);
star2.setImageResource(R.drawable.star_unselected);
star3.setImageResource(R.drawable.star_unselected);
star4.setImageResource(R.drawable.star_unselected);
star5.setImageResource(R.drawable.star_unselected);
// 根据选中数量设置星级为选中
for (int i = 1; i <= count; i++) {
switch (i) {
case 1:
star1.setImageResource(R.drawable.star_selected);
break;
case 2:
star2.setImageResource(R.drawable.star_selected);
break;
case 3:
star3.setImageResource(R.drawable.star_selected);
break;
case 4:
star4.setImageResource(R.drawable.star_selected);
break;
case 5:
star5.setImageResource(R.drawable.star_selected);
break;
}
}
}
}