رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام دوستان من یه برنامه نوشتم وحالا میخوام توش یه ساعت دیجیتال بزارم ولی از ظاهر ساعت دیجیتال اصلی اندروید خوشم نمیاد و میخوام ظاهرش (منظورم فونتش و اندازه و رنگ و... است)رو تغییر بدم لطفا اگه میشه راهنماییم کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار باید ویجت ساعت را سفارشی کنید :

ابتدا یک کلاس برای سفارشی کردن ویجت ایجاد کنید

[shcode=java]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();

        }

    }

}

[/shcode]

سپس در Layout خود بدین صورت ان را تعریف کنید

[shcode=xml]

    android:id="@+id/fragment_clock_digital"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="DigitalClock" />

[/shcode]

و در آخر نیز در اکتیویتی خود آن را تعریف کنید :

[shcode=java]CustomDigitalClock dc = (CustomDigitalClock)

mFragmentView.findViewById(R.id.fragment_clock_digital);

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...