ViewStructure.java revision e860891b1a7d4c1b581f294fa5831999caac6506
149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn/*
249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * Copyright (C) 2015 The Android Open Source Project
349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn *
449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * you may not use this file except in compliance with the License.
649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * You may obtain a copy of the License at
749b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn *
849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn *
1049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * Unless required by applicable law or agreed to in writing, software
1149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
1249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * See the License for the specific language governing permissions and
1449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * limitations under the License.
1549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn */
1649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
1749b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackbornpackage android.view;
1849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
1949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackbornimport android.graphics.Rect;
2049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackbornimport android.os.Bundle;
2149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
2249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn/**
2349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * Container for storing additional per-view data generated by {@link View#onProvideStructure
2449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn * View.onProvideStructure}.
2549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn */
2649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackbornpublic abstract class ViewStructure {
2702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
2802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the identifier for this view.
2902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     *
3002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param id The view's identifier, as per {@link View#getId View.getId()}.
3102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param packageName The package name of the view's identifier, or null if there is none.
3202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param typeName The type name of the view's identifier, or null if there is none.
3302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param entryName The entry name of the view's identifier, or null if there is none.
3402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
3549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setId(int id, String packageName, String typeName, String entryName);
3649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
3702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
3802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the basic dimensions of this view.
3902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     *
4002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param left The view's left position, in pixels relative to its parent's left edge.
4102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param top The view's top position, in pixels relative to its parent's top edge.
4202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param scrollX How much the view's x coordinate space has been scrolled, in pixels.
4302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param scrollY How much the view's y coordinate space has been scrolled, in pixels.
4402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param width The view's visible width, in pixels.  This is the width visible on screen,
4502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * not the total data width of a scrollable view.
4602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param height The view's visible height, in pixels.  This is the height visible on
4702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * screen, not the total data height of a scrollable view.
4802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
4949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setDimens(int left, int top, int scrollX, int scrollY, int width,
5049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn            int height);
5149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
5202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
5302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the visibility state of this view, as per
5402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link View#getVisibility View.getVisibility()}.
5502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
5649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setVisibility(int visibility);
5749b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
5849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    /** @hide */
5949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setAssistBlocked(boolean state);
6049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
6102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
6202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the enabled state of this view, as per {@link View#isEnabled View.isEnabled()}.
6302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
6449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setEnabled(boolean state);
6549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
6602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
6702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the clickable state of this view, as per {@link View#isClickable View.isClickable()}.
6802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
6949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setClickable(boolean state);
7049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
7102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
7202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the long clickable state of this view, as per
7302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link View#isLongClickable View.isLongClickable()}.
7402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
7549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setLongClickable(boolean state);
7649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
7702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
78e860891b1a7d4c1b581f294fa5831999caac6506Mady Mellor     * Set the context clickable state of this view, as per
79e860891b1a7d4c1b581f294fa5831999caac6506Mady Mellor     * {@link View#isContextClickable View.isContextClickable()}.
8002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
81e860891b1a7d4c1b581f294fa5831999caac6506Mady Mellor    public abstract void setContextClickable(boolean state);
8249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
8302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
8402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the focusable state of this view, as per {@link View#isFocusable View.isFocusable()}.
8502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
8649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setFocusable(boolean state);
8749b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
8802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
8902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the focused state of this view, as per {@link View#isFocused View.isFocused()}.
9002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
9149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setFocused(boolean state);
9249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
9302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
9402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the accessibility focused state of this view, as per
9502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link View#isAccessibilityFocused View.isAccessibilityFocused()}.
9602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
9749b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setAccessibilityFocused(boolean state);
9849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
9902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
10002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the checkable state of this view, such as whether it implements the
10102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link android.widget.Checkable} interface.
10202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
10349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setCheckable(boolean state);
10449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
10502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
10602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the checked state of this view, such as
10702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link android.widget.Checkable#isChecked Checkable.isChecked()}.
10802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
10949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setChecked(boolean state);
11049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
11102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
11202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the selected state of this view, as per {@link View#isSelected View.isSelected()}.
11302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
11449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setSelected(boolean state);
11549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
11602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
11702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the activated state of this view, as per {@link View#isActivated View.isActivated()}.
11802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
11949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setActivated(boolean state);
12049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
12102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
12202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the class name of the view, as per
12302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link View#getAccessibilityClassName View.getAccessibilityClassName()}.
12402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
12549b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setClassName(String className);
12649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
12702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
12802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the content description of the view, as per
12902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link View#getContentDescription View.getContentDescription()}.
13002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
13149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setContentDescription(CharSequence contentDescription);
13249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
13302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
13402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the text that is associated with this view.  There is no selection
13502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * associated with the text.  The text may have style spans to supply additional
13602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * display and semantic information.
13702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
13849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setText(CharSequence text);
13902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
14002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
14102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Like {@link #setText(CharSequence)} but with an active selection
14202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * extending from <var>selectionStart</var> through <var>selectionEnd</var>.
14302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
14449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setText(CharSequence text, int selectionStart, int selectionEnd);
14502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
14602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
14702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Explicitly set default global style information for text that was previously set with
14802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link #setText}.
14902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     *
15002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param size The size, in pixels, of the text.
15102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param fgColor The foreground color, packed as 0xAARRGGBB.
15202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param bgColor The background color, packed as 0xAARRGGBB.
15302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @param style Style flags, as defined by {@link android.app.AssistStructure.ViewNode}.
15402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
1555cfaae4aae744574f0fcc0876cdc5473bc1a344dJames Cook    public abstract void setTextStyle(float size, int fgColor, int bgColor, int style);
15602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
15702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
15802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set optional hint text associated with this view; this is for example the text that is
15902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * shown by an EditText when it is empty to indicate to the user the kind of text to input.
16002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
16149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setHint(CharSequence hint);
16249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
16302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
16402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Retrieve the last {@link #setText(CharSequence)}.
16502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
16649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract CharSequence getText();
16702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
16802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
16902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Retrieve the last selection start set by {@link #setText(CharSequence, int, int)}.
17002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
17149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract int getTextSelectionStart();
17202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
17302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
17402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Retrieve the last selection end set by {@link #setText(CharSequence, int, int)}.
17502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
17649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract int getTextSelectionEnd();
17702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
17802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
17902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Retrieve the last hint set by {@link #setHint}.
18002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
18149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract CharSequence getHint();
18249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
18302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
18402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Get extra data associated with this view structure; the returned Bundle is mutable,
18502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * allowing you to view and modify its contents.  Keys placed in the Bundle should use
18602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * an appropriate namespace prefix (such as com.google.MY_KEY) to avoid conflicts.
18702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
18849b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract Bundle getExtras();
18902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
19002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
19102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Returns true if {@link #getExtras} has been used to create extra content.
19202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
19349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract boolean hasExtras();
19449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
19502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
19602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Set the number of children of this view, which defines the range of indices you can
19702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * use with {@link #newChild} and {@link #asyncNewChild}.  Calling this method again
19802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * resets all of the child state of the view, removing any children that had previously
19902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * been added.
20002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
20149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void setChildCount(int num);
20202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
20302beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
20402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Return the child count as set by {@link #setChildCount}.
20502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
20649b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract int getChildCount();
20702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
20802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
20902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Create a new child {@link ViewStructure} in this view, putting into the list of
21002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * children at <var>index</var>.
21102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @return Returns an fresh {@link ViewStructure} ready to be filled in.
21202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
21349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract ViewAssistStructure newChild(int index);
21449b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
21502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
21602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Like {@link #newChild}, but allows the caller to asynchronously populate the returned
21702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * child.  It can transfer the returned {@link ViewStructure} to another thread for it
21802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * to build its content (and children etc).  Once done, some thread must call
21902beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link #asyncCommit} to tell the containing {@link ViewStructure} that the async
22002beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * population is done.
22102beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * @return Returns an fresh {@link ViewStructure} ready to be filled in.
22202beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
22349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract ViewAssistStructure asyncNewChild(int index);
22402beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn
22502beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn    /**
22602beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * Call when done populating a {@link ViewStructure} returned by
22702beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     * {@link #asyncNewChild}.
22802beb41c97a44a3333b1e9eca9033e91282d887dDianne Hackborn     */
22949b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract void asyncCommit();
23049b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn
23149b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    /** @hide */
23249b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn    public abstract Rect getTempRect();
23349b043f37d7231b1544cb72e1bfb616e5a00688dDianne Hackborn}
234