rezaeade

ساعت

6 ارسال در این موضوع قرار دارد

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

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


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

کسی از دوستان نمیدونه چه کار باید کنم

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


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

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

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

[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]

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


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

دستتون درد نکنه از اینکه جوابم رو دادین ولی وقتی قسمت اخر رو اضافه میکنمmFragmentView ارور میگیره

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


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

بدین صورت بنویسید :

[shcode=java]CustomDigitalClock dc = (CustomDigitalClock)findViewById(R.id.fragment_clock_digital);

[/shcode]

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


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

ممنون ولی باز ارور گرفت

لطفا اگر میتونید یه sampleبدید خیلی ممنون میشم

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری