第二阶段冲刺第四天

摘要:剩余一些签到的功能尚未完成,今天继续把剩下的搞完

代码:

package com.lh.std_everything.ui.sign.SignViewX;

import android.content.Context;
import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.view.WindowManager;

import java.text.DecimalFormat;

/**
 * 屏幕分辨率计算工具
 */
public class ResolutionUtil {
    private static volatile ResolutionUtil instance;

    /**
     * UI模版标准宽度
     */
    private static final int STANDARD_SCREEN_WIDTH = 1080;
    /**
     * UI模版标准高度
     */
    private static final int STANDARD_SCREEN_HEIGHT = 1853;

    private boolean isInitial;
    private int screenWidth;
    private int screenHeight;
    /**
     * 垂直方向数据列
     */
    private SparseArray<Integer> verticalPixelList;
    /**
     * 水平方向数据列
     */
    private SparseArray<Integer> horizontalPixelList;

    public ResolutionUtil() {
        isInitial = false;
        verticalPixelList = new SparseArray<>();
        horizontalPixelList = new SparseArray<>();
    }

    /**
     * 获取当前设备屏幕分辨率
     *
     * @param context context
     */
    public void init(Context context) {
        if (!isInitial) {
            DisplayMetrics metrics = new DisplayMetrics();
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);

            this.screenWidth = metrics.widthPixels;
            this.screenHeight = metrics.heightPixels;
            isInitial = true;
        }
    }

    public static ResolutionUtil getInstance() {
        if (instance == null) {
            synchronized (ResolutionUtil.class) {
                if (instance == null) {
                    instance = new ResolutionUtil();
                }
            }
        }
        return instance;
    }

    public int getScreenWidth() {
        return screenWidth;
    }

    public int getScreenHeight() {
        return screenHeight;
    }

    public int formatHorizontal(int standardValue) {
        int processedValue = horizontalPixelList.get(standardValue, -1);
        if (processedValue == -1) {
            processedValue = Integer.valueOf(getFormatDouble("#0000", standardValue * screenWidth / STANDARD_SCREEN_WIDTH));
            horizontalPixelList.append(standardValue, processedValue);
        }
        return processedValue;
    }

    public int formatVertical(int standardValue) {
        int processedValue = verticalPixelList.get(standardValue, -1);
        if (processedValue == -1) {
            processedValue = Integer.valueOf(getFormatDouble("#0000", standardValue * screenHeight / STANDARD_SCREEN_HEIGHT));
            verticalPixelList.append(standardValue, processedValue);
        }
        return processedValue;
    }

    public static String getFormatDouble(String str, double sum) {
        DecimalFormat df = new DecimalFormat(str);
        return df.format(sum);
    }
}
View Code
package com.lh.std_everything.ui.sign.SignViewX;

import java.util.List;

/**
 * SignAdapter
 * CCreated by David  2020/5/1.
 */
public class SignAdapter extends CalendarAdapter {
    private List<SignEntity> data;

    public SignAdapter(List<SignEntity> data) {
        this.data = data;
    }

    @Override
    public SignView.DayType getType(int dayOfMonth) {
        return SignView.DayType.valueOf(data.get(dayOfMonth - 1).getDayType());
    }
}
View Code
package com.lh.std_everything.ui.sign.SignViewX;

/**
 * SignEntity
 * Created by David  2020/5/1.
 */
public class SignEntity {
    private int dayOfMonth;
    private int dayType;

    public int getDayOfMonth() {
        return dayOfMonth;
    }

    public void setDayOfMonth(int dayOfMonth) {
        this.dayOfMonth = dayOfMonth;
    }

    public int getDayType() {
        return dayType;
    }

    public void setDayType(int dayType) {
        this.dayType = dayType;
    }
}
View Code

测试有bug,不能记录签到状态。。。

明天改一下。

原文地址:https://www.cnblogs.com/dd110343/p/13059780.html