18d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet/* 28d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Copyright (C) 2010 The Android Open Source Project 38d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 48d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 58d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * you may not use this file except in compliance with the License. 68d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * You may obtain a copy of the License at 78d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 88d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 98d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 108d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software 118d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 128d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * See the License for the specific language governing permissions and 148d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * limitations under the License. 158d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet */ 168d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 178d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohetpackage android.animation; 188d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 198d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohetimport com.android.layoutlib.bridge.impl.DelegateManager; 209a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohetimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 218d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 228d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet/** 238d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Delegate implementing the native methods of android.animation.PropertyValuesHolder 248d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 258d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Through the layoutlib_create tool, the original native methods of PropertyValuesHolder have been 268d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * replaced by calls to methods of the same name in this delegate class. 278d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 288d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * Because it's a stateless class to start with, there's no need to keep a {@link DelegateManager} 298d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * around to map int to instance of the delegate. 308d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 318d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * The main goal of this class' methods are to provide a native way to access setters and getters 328d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * on some object. In this case we want to default to using Java reflection instead so the native 338d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * methods do nothing. 348d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet * 358d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet */ 368d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet/*package*/ class PropertyValuesHolder_Delegate { 378d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 389a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet @LayoutlibDelegate 398d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet /*package*/ static int nGetIntMethod(Class<?> targetClass, String methodName) { 408d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet // return 0 to force PropertyValuesHolder to use Java reflection. 418d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet return 0; 428d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet } 438d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 449a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet @LayoutlibDelegate 458d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet /*package*/ static int nGetFloatMethod(Class<?> targetClass, String methodName) { 468d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet // return 0 to force PropertyValuesHolder to use Java reflection. 478d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet return 0; 488d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet } 498d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 509a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet @LayoutlibDelegate 518d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet /*package*/ static void nCallIntMethod(Object target, int methodID, int arg) { 528d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet // do nothing 538d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet } 548d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet 559a4fe29c8d92014d2d9a848e9116b8cc9d0842f9Xavier Ducrohet @LayoutlibDelegate 568d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet /*package*/ static void nCallFloatMethod(Object target, int methodID, float arg) { 578d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet // do nothing 588d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet } 598d74c978bbf3da4095ef8e40c005a6fdf0637071Xavier Ducrohet} 60