1b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang
27d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang/*
37d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * Copyright (C) 2012 The Android Open Source Project
47d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang *
57d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License");
67d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * you may not use this file except in compliance with the License.
77d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * You may obtain a copy of the License at
87d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang *
97d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang *      http://www.apache.org/licenses/LICENSE-2.0
107d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang *
117d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * Unless required by applicable law or agreed to in writing, software
127d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS,
137d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
147d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * See the License for the specific language governing permissions and
157d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang * limitations under the License.
167d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang */
177d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang
187d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Changpackage com.android.gallery3d.ui;
197d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang
207d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Changimport android.os.SystemClock;
217d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang
22cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang//
23cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang// The animation time should ideally be the vsync time the frame will be
24cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang// displayed, but that is an unknown time in the future. So we use the system
25cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang// time just after eglSwapBuffers (when GLSurfaceView.onDrawFrame is called)
26cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang// as a approximation.
27cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang//
287d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Changpublic class AnimationTime {
297d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    private static volatile long sTime;
307d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang
317d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    // Sets current time as the animation time.
32cb05834cedb8223fc59456afcd62fa7448f2b3b8Chih-Chung Chang    public static void update() {
337d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang        sTime = SystemClock.uptimeMillis();
347d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    }
357d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang
367d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    // Returns the animation time.
377d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    public static long get() {
387d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang        return sTime;
397d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang    }
40b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang
41b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang    public static long startTime() {
42b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang        sTime = SystemClock.uptimeMillis();
43b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang        return sTime;
44b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang    }
457d19f7f4281f232b9dceee4a5df390c03e2bd16bChih-Chung Chang}
46