1.首先创建弹窗
private void showqiandao() {
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(R.layout.qiandao, null);
float density = getResources().getDisplayMetrics().density;
int widthInPx = Math.round(500 * density);
int heightInPx = Math.round(350 * density);
final PopupWindow popupWindow = new PopupWindow(popupView, widthInPx, heightInPx, true);
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
View parentView = findViewById(android.R.id.content);
popupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0);
int currentDayOfWeek = getCurrentDayOfWeek();
// 设置当天的"guang"视图的可见性
setGuangVisibility(popupView, currentDayOfWeek);
ImageView zhezhao = popupView.findViewById(getResources().getIdentifier("zhezhao" + currentDayOfWeek, "id", getPackageName())); //遮罩层
ImageView duigou = popupView.findViewById(getResources().getIdentifier("duigou" + currentDayOfWeek, "id", getPackageName())); //领取成功后的图片
FrameLayout qiandao = popupView.findViewById(getResources().getIdentifier("qiandao" + currentDayOfWeek, "id", getPackageName())); //奖品主体
qiandao.setOnClickListener(v -> handleQiandao(currentDayOfWeek, zhezhao, duigou, popupWindow, popupView));
loadQiandaoState(popupView);
ImageView closeButton = popupView.findViewById(R.id.back);
closeButton.setOnClickListener(v -> popupWindow.dismiss());
}
2.判断当天是否已经签到
private void handleQiandao(int dayOfWeek, ImageView zhezhao, ImageView duigou, PopupWindow popupWindow, View popupView) {
String savedDay = sharedPreferences.getString(PREF_SIGNED_DAY, "");
if (savedDay.equals(String.valueOf(dayOfWeek))) {
Toast.makeText(this, "今天已经签到过了!", Toast.LENGTH_SHORT).show();
} else {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(PREF_SIGNED_DAY, String.valueOf(dayOfWeek));
editor.apply();
zhezhao.setVisibility(View.VISIBLE);
duigou.setVisibility(View.VISIBLE);
int coins = (dayOfWeek == 7) ? 10000 : 500; // Sunday gets 10000 coins, otherwise 500 coins
addCoinsDisplay(coins);
popupWindow.dismiss(); //签到成功后关闭弹窗
showGameCoinDialog(coins); //显示领取动画
}
}
3.如果已经签到就显示遮罩层,没有签到就显示签到
private void loadQiandaoState(View popupView) {
String savedDay = sharedPreferences.getString(PREF_SIGNED_DAY, "");
int currentDayOfWeek = getCurrentDayOfWeek();
for (int day = 1; day <= 7; day++) {
int zhezhaoId = getResources().getIdentifier("zhezhao" + day, "id", getPackageName());
int duigouId = getResources().getIdentifier("duigou" + day, "id", getPackageName());
int guangId = getResources().getIdentifier("guang" + day, "id", getPackageName());
ImageView zhezhao = popupView.findViewById(zhezhaoId);
ImageView duigou = popupView.findViewById(duigouId);
ImageView guang = popupView.findViewById(guangId);
if (String.valueOf(day).equals(savedDay) && day == currentDayOfWeek) {
zhezhao.setVisibility(View.VISIBLE);
duigou.setVisibility(View.VISIBLE);
guang.setVisibility(View.GONE);
} else {
zhezhao.setVisibility(View.GONE);
duigou.setVisibility(View.GONE);
}
}
}
4.根据实际日期判断该点击哪个
private void setGuangVisibility(View popupView, int dayOfWeek) {
for (int i = 1; i <= 7; i++) {
int guangId = getResources().getIdentifier("guang" + i, "id", getPackageName());
View guang = popupView.findViewById(guangId);
if (guang != null) {
guang.setVisibility(i == dayOfWeek ? View.VISIBLE : View.GONE);
}
}
}
5.获取当前日期
private int getCurrentDayOfWeek() {
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SUNDAY) {
return 7;
} else {
return dayOfWeek - 1;
}
}
6.XML代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_lin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_pop_l2x"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<!--顶部按钮-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:layout_weight="1">
<FrameLayout
android:id="@+id/four"
android:layout_width="160dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/dailybonus2x" />
<ImageView
android:id="@+id/back"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:background="@drawable/ic_xx2x" />
</RelativeLayout>
<!--中间排行榜-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:layout_weight="6"
android:background="@drawable/bg_qiandao_main"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="15dp">
<!-- 上面三个-->
<FrameLayout
android:id="@+id/qiandao1"
android:layout_width="100dp"
android:layout_height="120dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day1"
android:layout_toLeftOf="@+id/day1"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 1"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_12x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao1"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou1"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang1"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:id="@+id/qiandao2"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_marginLeft="10dp"
app:layout_constraintStart_toEndOf="@id/qiandao1"
app:layout_constraintTop_toTopOf="@id/qiandao1">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day2"
android:layout_toLeftOf="@+id/day2"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 2"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money2"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_12x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money2"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao2"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou2"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang2"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:id="@+id/qiandao3"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_marginLeft="10dp"
app:layout_constraintStart_toEndOf="@id/qiandao2"
app:layout_constraintTop_toTopOf="@id/qiandao1">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day3"
android:layout_toLeftOf="@+id/day3"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 3"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money3"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_12x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money3"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao3"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou3"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang3"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<!-- 下面三个-->
<FrameLayout
android:id="@+id/qiandao4"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/qiandao1">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day4"
android:layout_toLeftOf="@+id/day4"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 4"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money4"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_22x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money4"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao4"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou4"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang4"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:id="@+id/qiandao5"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_marginLeft="10dp"
app:layout_constraintStart_toEndOf="@id/qiandao4"
app:layout_constraintTop_toBottomOf="@id/qiandao2"
app:layout_constraintTop_toTopOf="@+id/qiandao4">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day5"
android:layout_toLeftOf="@+id/day5"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 5"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money5"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_22x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money5"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao5"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou5"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang5"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:id="@+id/qiandao6"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_marginLeft="10dp"
app:layout_constraintStart_toEndOf="@id/qiandao5"
app:layout_constraintTop_toTopOf="@id/qiandao4">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="120dp"
android:background="@drawable/bg_day12x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day6"
android:layout_toLeftOf="@+id/day6"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 6"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money6"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:background="@drawable/ic_coin_22x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money6"
android:layout_centerHorizontal="true"
android:text="500"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao6"
android:layout_width="100dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou6"
android:layout_width="80dp"
android:layout_height="115dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang6"
android:layout_width="100dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
<!-- 第七天-->
<FrameLayout
android:id="@+id/qiandao7"
android:layout_width="100dp"
android:layout_height="250dp"
android:layout_marginLeft="10dp"
app:layout_constraintStart_toEndOf="@id/qiandao3"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="250dp"
android:background="@drawable/bg_day72x">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignTop="@+id/day7"
android:layout_toLeftOf="@+id/day7"
android:src="@drawable/ic_jiaojiao2x" />
<TextView
android:id="@+id/day7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="Day 7"
android:textColor="@color/white"
android:textStyle="bold" />
<ImageView
android:id="@+id/icon_money7"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:background="@drawable/ic_coin_32x" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon_money7"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="10,000"
android:textColor="@color/money_color"
android:textSize="25sp"
android:textStyle="bold" />
</RelativeLayout>
<ImageView
android:id="@+id/zhezhao7"
android:layout_width="100dp"
android:layout_height="246dp"
android:layout_gravity="center"
android:background="@drawable/zhezhao2x"
android:visibility="gone" />
<ImageView
android:id="@+id/duigou7"
android:layout_width="80dp"
android:layout_height="245dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_duigou2x"
android:visibility="gone" />
<ImageView
android:id="@+id/guang7"
android:layout_width="100dp"
android:layout_height="250dp"
android:layout_gravity="center"
android:background="@drawable/bk_huang2x"
android:scaleType="centerInside"
android:visibility="gone" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>