<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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.
-->
<resources>

    <declare-styleable name="CanvasSettings">
        <attr name="preference" format="reference" />
    </declare-styleable>
    <declare-styleable name="WifiEncryptionState">
        <attr name="state_encrypted" format="boolean" />
    </declare-styleable>
    <declare-styleable name="PercentageBarChart">

        <!-- Background color -->
        <attr name="emptyColor" format="color" />
        <!-- Minimum tick width for each slice in the bar chart. -->
        <attr name="minTickWidth" format="dimension" />
    </declare-styleable>

    <declare-styleable name="FrameLayoutWithShadows">
        <!-- default shadow drawable -->
        <attr name="defaultShadow" format="reference"/>
        <!-- drawable on bottom of content, note: it requires intrinsic height,
             so ColorDrawable does not work,  use ShapeDrawable with solid color
             instead -->
        <attr name="drawableBottom" format="reference"/>
        </declare-styleable>

    <declare-styleable name="ScrollAdapterView">

        <attr name="orientation">
            <enum name="horizontal" value="0" />
            <enum name="vertical" value="1" />
        </attr>

        <!-- indicate whether the ScrollAdapterView's child can have focus,
        default is true -->
        <attr name="itemFocusable" format="boolean" />

        <!--
          set to 1 (default value) for single row/column, set to > 1 for grid view,
          set to 0 for auto adjust rows/columns by widget size.
        -->
        <attr name="gridSetting" format="integer" />

        <!-- space between two items -->
        <attr name="space" format="dimension" />

        <!-- alternative space size of a selected item, ScrollAdapterView may assign
        more (or less) space to the selected item and animate the transition between
        multiple items.  In a more complicated case: if each item has a different
        selectedSize,  use ScrollAdapterCustomSize. <p>
        The value can be used in two cases: <p>
        - when selectedTakesMoreSpace is true:  ScrollAdapterView will allocate more
        spaces surrounding the focused item.  The extra spaces is added to start/end
        depending on "scrollItemAlign". <p>
        - when selectedTakesMoreSpace is false: ScrollAdapterView will not allocate
        more spaces for focused item,  but will align the focused item using the value. <p>
        In any case, ScrollAdapterView never scale the View or change its width or height,
        the view itself is responsible doing the scale in ScrollAdapterTransform or
        ScrollAdapterView.OnScrollListener
        -->
        <attr name="selectedSize" format="dimension" />

        <!-- if ScrollAdapterView will use "selectedSize" or ScrollAdapterCustomSize
        to add more spaces for selected item-->
        <attr name="selectedTakesMoreSpace" format="boolean" />

        <!-- describe how to put scroll center in the viewport -->
        <attr name="scrollCenterStrategy">

            <!-- keep scroll center in center of viewport, the middle point is 1/2 inside
            client area (size - padding) by default.  But you can also use scrollCenterOffset
            or scrollCenterOffsetPercent to customize it-->
            <enum name="keepCenter" value="0" />
            <!-- keep scroll center as a fixed distance from start/top -->
            <enum name="fixed" value="1" />
            <!-- keep scroll center offset from the center of the view -->
            <enum name="fixedPercent" value="2"/>
            <!-- keep scroll center as a fixed distance from end/bottom -->
            <enum name="fixedToEnd" value="3" />
        </attr>

        <!-- only used when scrollCenterStrategy is fixed or fixedPercent -->
        <attr name="scrollCenterOffset" format="dimension" />

        <!-- only used when scrollCenterStrategy is fixedPercent -->
        <attr name="scrollCenterOffsetPercent" format="integer" />

        <!-- how to align the selected item -->
        <attr name="scrollItemAlign">
            <!-- align the center of selected item -->
            <enum name="center" value="0" />
            <!-- align the start/up edge of selected item -->
            <enum name="low" value="1" />
            <!-- align the end/down edge of selected item -->
            <enum name="high" value="2" />
        </attr>

        <!-- divisor (>=1) for view to chasing the scrolling target pos, set to 1.0 for
        immediately fill the gap of current pos and target, default value 2.0 fills half
        of the gap every time.  The reason that we use Lerper model is for smoothing out
        transitions between two different animations. -->
        <attr name="lerperDivisor" format="float" />

        <!--
          distance based transform for the views on the start/top of center position,
          the duration is interpreted as "dip" instead of milliseconds
        -->
        <attr name="lowItemTransform" format="reference" />

        <!--
          distance based transform for the views on the end/down of center position,
          the duration is interpreted as "dip" instead of milliseconds
        -->
        <attr name="highItemTransform" format="reference" />

        <!-- animation for showing expanded item -->
        <attr name="expandedItemInAnim" format="reference" />

        <!-- animation for hiding expanded item -->
        <attr name="expandedItemOutAnim" format="reference" />

        <!--  allow DPAD key to navigate out of scrollAdapterView, default is true -->
        <attr name="navigateOutAllowed" format="boolean" />

        <!--  allow DPAD key to navigate out of off axis of scrollAdapterView, default is true -->
        <attr name="navigateOutOfOffAxisAllowed" format="boolean" />

        <!--  allow DPAD key during animation, default is true -->
        <attr name="navigateInAnimationAllowed" format="boolean" />

    </declare-styleable>

    <declare-styleable name="RefcountImageView">
        <attr name="autoUnrefOnDetach" format="boolean" />
    </declare-styleable>
</resources>
