| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.layoutlib.api; |
| |
| import java.util.Map; |
| |
| /** |
| * Entry point of the Layout Lib. Implementations of this interface provide a method to compute |
| * and render a layout. |
| */ |
| public interface ILayoutBridge { |
| |
| /** |
| * Initializes the Bridge object. |
| * @param fontOsLocation the location of the fonts. |
| * @param enumValueMap map attrName => { map enumFlagName => Integer value }. |
| * @return true if success. |
| */ |
| boolean init(String fontOsLocation, Map<String, Map<String, Integer>> enumValueMap); |
| |
| |
| /** |
| * Computes and renders a layout |
| * @param layoutDescription the {@link IXmlPullParser} letting the LayoutLib Bridge visit the |
| * layout file. |
| * @param projectKey An Object identifying the project. This is used for the cache mechanism. |
| * @param screenWidth |
| * @param screenHeight |
| * @param themeName The name of the theme to use. In order to differentiate project and platform |
| * themes sharing the same name, all project themes must be prepended with a '*' character. |
| * @param projectResources the resources of the project. The map contains (String, map) pairs |
| * where the string is the type of the resource reference used in the layout file, and the |
| * map contains (String, {@link IResourceValue}) pairs where the key is the resource name, |
| * and the value is the resource value. |
| * @param frameworkResources the framework resources. The map contains (String, map) pairs |
| * where the string is the type of the resource reference used in the layout file, and the map |
| * contains (String, {@link IResourceValue}) pairs where the key is the resource name, and the |
| * value is the resource value. |
| * @param projectCallback The {@link IProjectCallback} object to get information from |
| * the project. |
| * @param logger the object responsible for displaying warning/errors to the user. |
| * @return an {@link ILayoutResult} object that contains the result of the layout. |
| */ |
| ILayoutResult computeLayout(IXmlPullParser layoutDescription, |
| Object projectKey, |
| int screenWidth, int screenHeight, String themeName, |
| Map<String, Map<String, IResourceValue>> projectResources, |
| Map<String, Map<String, IResourceValue>> frameworkResources, |
| IProjectCallback projectCallback, ILayoutLog logger); |
| |
| /** |
| * Clears the resource cache for a specific project. |
| * <p/>This cache contains bitmaps and nine patches that are loaded from the disk and reused |
| * until this method is called. |
| * <p/>The cache is not configuration dependent and should only be cleared when a |
| * resource changes (at this time only bitmaps and 9 patches go into the cache). |
| * @param objectKey the key for the project. |
| */ |
| void clearCaches(Object projectKey); |
| } |