این وبسایت یک نسخه آزمایشی از سایت developer android می‌باشد که در حال ترجمه می‌باشد.
برای پیوستن به تیم ترجمه و خواندن مستندات اینجا کلیک کنید.
WatchFace / Wearable / src / com.example.android.wearable.watchface /

CardBoundsWatchFaceService.java

1
/*
2
 * Copyright (C) 2014 The Android Open Source Project
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *      http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
 
17
package com.example.android.wearable.watchface;
18
 
19
import android.graphics.Canvas;
20
import android.graphics.Color;
21
import android.graphics.Paint;
22
import android.graphics.Rect;
23
import android.support.wearable.watchface.CanvasWatchFaceService;
24
import android.support.wearable.watchface.WatchFaceStyle;
25
import android.util.Log;
26
import android.view.SurfaceHolder;
27
 
28
/**
29
 * Proof of concept sample watch face that demonstrates how a watch face can detect where the peek
30
 * card is. This watch face draws a border around the area where the peeking card is.
31
 */
32
public class CardBoundsWatchFaceService extends CanvasWatchFaceService {
33
 
34
    private static final String TAG = "CardBoundsWatchFace";
35
 
36
    @Override
37
    public Engine onCreateEngine() {
38
        return new Engine();
39
    }
40
 
41
    private class Engine extends CanvasWatchFaceService.Engine {
42
 
43
        static final int BORDER_WIDTH_PX = 5;
44
 
45
        final Rect mCardBounds = new Rect();
46
        final Paint mPaint = new Paint();
47
 
48
        @Override
49
        public void onCreate(SurfaceHolder holder) {
50
            if (Log.isLoggable(TAG, Log.DEBUG)) {
51
                Log.d(TAG, "onCreate");
52
            }
53
            super.onCreate(holder);
54
            setWatchFaceStyle(new WatchFaceStyle.Builder(CardBoundsWatchFaceService.this)
55
                    .setCardPeekMode(WatchFaceStyle.PEEK_MODE_VARIABLE)
56
                    .setBackgroundVisibility(WatchFaceStyle.BACKGROUND_VISIBILITY_INTERRUPTIVE)
57
                    .setShowSystemUiTime(true)
58
                    .setPeekOpacityMode(WatchFaceStyle.PEEK_OPACITY_MODE_TRANSLUCENT)
59
                    .build());
60
        }
61
 
62
        @Override
63
        public void onAmbientModeChanged(boolean inAmbientMode) {
64
            if (Log.isLoggable(TAG, Log.DEBUG)) {
65
                Log.d(TAG, "onAmbientModeChanged: " + inAmbientMode);
66
            }
67
            super.onAmbientModeChanged(inAmbientMode);
68
            invalidate();
69
        }
70
 
71
        @Override
72
        public void onPeekCardPositionUpdate(Rect bounds) {
73
            super.onPeekCardPositionUpdate(bounds);
74
            if (Log.isLoggable(TAG, Log.DEBUG)) {
75
                Log.d(TAG, "onPeekCardPositionUpdate: " + bounds);
76
            }
77
            super.onPeekCardPositionUpdate(bounds);
78
            if (!bounds.equals(mCardBounds)) {
79
                mCardBounds.set(bounds);
80
                invalidate();
81
            }
82
        }
83
 
84
        @Override
85
        public void onDraw(Canvas canvas, Rect bounds) {
86
            // Clear screen.
87
            canvas.drawColor(isInAmbientMode() ? Color.BLACK : Color.BLUE);
88
 
89
            // Draw border around card in interactive mode.
90
            if (!isInAmbientMode()) {
91
                mPaint.setColor(Color.MAGENTA);
92
                canvas.drawRect(mCardBounds.left - BORDER_WIDTH_PX,
93
                        mCardBounds.top - BORDER_WIDTH_PX,
94
                        mCardBounds.right + BORDER_WIDTH_PX,
95
                        mCardBounds.bottom + BORDER_WIDTH_PX, mPaint);
96
            }
97