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