gpt4 book ai didi

java - Android:DigitalClock 删除秒数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:10 28 4
gpt4 key购买 nike

我使用这段代码为我的应用程序添加了一个时钟:

  <DigitalClock 
android:id="@+id/digitalclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize = "30sp"
/>

问题是它还显示秒..有一种简单快速的方法来隐藏那些吗?我只需要 hh:mm 格式的小时和分钟,而不是 hh:mm:ss!有什么建议么?谢谢!

最佳答案

找到答案 here ,对于其他寻找有效答案的人,这里是:

  1. 从 android 源克隆/复制 DigitalClock.java
  2. 更改新 CustomDigitalClock 中的格式字符串

    package com.example;

    import android.content.Context;
    import android.content.res.Resources;
    import android.database.ContentObserver;
    import android.os.Handler;
    import android.os.SystemClock;
    import android.provider.Settings;
    import android.text.format.DateFormat;
    import android.util.AttributeSet;
    import android.widget.TextView;

    import java.util.Calendar;

    /**
    * You have to make a clone of the file DigitalClock.java to use in your application, modify in the following manner:-
    * private final static String m12 = "h:mm aa";
    * private final static String m24 = "k:mm";
    */

    public class CustomDigitalClock extends TextView {

    Calendar mCalendar;
    private final static String m12 = "h:mm aa";
    private final static String m24 = "k:mm";
    private FormatChangeObserver mFormatChangeObserver;

    private Runnable mTicker;
    private Handler mHandler;

    private boolean mTickerStopped = false;

    String mFormat;

    public CustomDigitalClock(Context context) {
    super(context);
    initClock(context);
    }

    public CustomDigitalClock(Context context, AttributeSet attrs) {
    super(context, attrs);
    initClock(context);
    }

    private void initClock(Context context) {
    Resources r = context.getResources();

    if (mCalendar == null) {
    mCalendar = Calendar.getInstance();
    }

    mFormatChangeObserver = new FormatChangeObserver();
    getContext().getContentResolver().registerContentObserver(
    Settings.System.CONTENT_URI, true, mFormatChangeObserver);

    setFormat();
    }

    @Override
    protected void onAttachedToWindow() {
    mTickerStopped = false;
    super.onAttachedToWindow();
    mHandler = new Handler();

    /**
    * requests a tick on the next hard-second boundary
    */
    mTicker = new Runnable() {
    public void run() {
    if (mTickerStopped) return;
    mCalendar.setTimeInMillis(System.currentTimeMillis());
    setText(DateFormat.format(mFormat, mCalendar));
    invalidate();
    long now = SystemClock.uptimeMillis();
    long next = now + (1000 - now % 1000);
    mHandler.postAtTime(mTicker, next);
    }
    };
    mTicker.run();
    }

    @Override
    protected void onDetachedFromWindow() {
    super.onDetachedFromWindow();
    mTickerStopped = true;
    }

    /**
    * Pulls 12/24 mode from system settings
    */
    private boolean get24HourMode() {
    return android.text.format.DateFormat.is24HourFormat(getContext());
    }

    private void setFormat() {
    if (get24HourMode()) {
    mFormat = m24;
    } else {
    mFormat = m12;
    }
    }

    private class FormatChangeObserver extends ContentObserver {
    public FormatChangeObserver() {
    super(new Handler());
    }

    @Override
    public void onChange(boolean selfChange) {
    setFormat();
    }
    }

    }
  3. 在布局 xml 中引用自定义类

    <com.example.CustomDigitalClock
    android:id="@+id/fragment_clock_digital"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="DigitalClock" />
  4. 在 Activity/fragment 中加载 CustomDigitalClock

    CustomDigitalClock dc = (CustomDigitalClock)
    mFragmentView.findViewById(R.id.fragment_clock_digital);

关于java - Android:DigitalClock 删除秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7610549/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com