Android自定义睡眠质量分布控件

HDSleepQuality

一个非常轻量级别的睡眠质量分布控件,支持自定义属性
sleep.gif

Github地址

https://github.com/yinhaide/HDSleepQuality

特性

  • 支持动画过度

  • 支持设置各个睡眠质量的颜色

  • 支持连接各个睡眠质量条

如何快速集成

导入方式

在工程级别的build.gradle添加

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

在应用级别的build.gradle添加

api 'com.github.yinhaide:HDSleepQuality:0.0.1'

范例

[XML]
    <com.yhd.semicircle.SemiCircleView
        android:background="@color/colorWhite"
        android:id="@+id/smc"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:se_deepColor="#ffa239"/>

[JAVA] 
    /**
     * 需要加深分布点,是一个String[]类表,规则如下
     * String[0]:开始百分比(0-1f)
     * String[1]:扫过的百分比(0-1f)
     * String[0] + String[1] <= 1f
     */
    List<float[]> deepArray = new ArrayList<>();
    deepArray.add(new float[]{0.2f, 0.1f});
    deepArray.add(new float[]{0.4f, 0.1f});
    deepArray.add(new float[]{0.6f, 0.1f});
    barChartView.setDeepArray(deepArray);

分享设计思路

控件整体由三种睡眠质量的长度条以及他们的连线组成

  • 第一步:绘制三种睡眠质量的长条
  • 第二步:依次线条连接各个在睡眠长条

这个项目会持续更新中…

都看到这里了,如果觉得写的可以或者对你有帮助的话,顺手给个星星点下Star~

这个控件内部采用一个Fragment框架,如果有兴趣的话可以去了解一下

关于我

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用 Android 自定义控件来创建一个分秒计时器控件,以下是一个示例代码: ``` public class CustomTimerView extends LinearLayout { private TextView mMinutesTextView; private TextView mSecondsTextView; private int mMinutes; private int mSeconds; private boolean mIsRunning; private CountDownTimer mCountDownTimer; public CustomTimerView(Context context) { super(context); init(); } public CustomTimerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public CustomTimerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.custom_timer_view, this, true); mMinutesTextView = findViewById(R.id.minutes_text_view); mSecondsTextView = findViewById(R.id.seconds_text_view); mMinutes = 0; mSeconds = 0; mIsRunning = false; } public void setMinutes(int minutes) { mMinutes = minutes; mMinutesTextView.setText(String.format(Locale.getDefault(), "%02d", mMinutes)); } public void setSeconds(int seconds) { mSeconds = seconds; mSecondsTextView.setText(String.format(Locale.getDefault(), "%02d", mSeconds)); } public void start() { if (!mIsRunning) { mIsRunning = true; int totalTime = mMinutes * 60 + mSeconds; mCountDownTimer = new CountDownTimer(totalTime * 1000, 1000) { @Override public void onTick(long millisUntilFinished) { int minutes = (int) (millisUntilFinished / 1000) / 60; int seconds = (int) (millisUntilFinished / 1000) % 60; setMinutes(minutes); setSeconds(seconds); } @Override public void onFinish() { mIsRunning = false; } }; mCountDownTimer.start(); } } public void stop() { if (mIsRunning) { mIsRunning = false; mCountDownTimer.cancel(); } } public boolean isRunning() { return mIsRunning; } } ``` 这个自定义控件包括两个文本视图,用于显示分钟和秒数。还包括 `setMinutes()`、`setSeconds()`、`start()`、`stop()` 和 `isRunning()` 方法,用于设置分秒计时器的时间、启动和停止计时器,以及检查计时器是否正在运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值