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