Android 中framework层替换系统progressbar

来源:互联网 发布:java threadlocal 编辑:程序博客网 时间:2024/06/03 20:00

    在framework层,系统定义的progressbar位于frameworks\base\core\res\res\values\styles.xml文件中定义:

 <style name="Widget.ProgressBar">        <item name="android:indeterminateOnly">true</item>        <item name="android:indeterminateDrawable">@android:drawable/progress_medium_white</item>        <item name="android:indeterminateBehavior">repeat</item>        <item name="android:indeterminateDuration">3500</item>        <item name="android:minWidth">48dip</item>        <item name="android:maxWidth">48dip</item>        <item name="android:minHeight">48dip</item>        <item name="android:maxHeight">48dip</item>        <item name="android:mirrorForRtl">false</item>    </style>    <style name="Widget.ProgressBar.Large">        <item name="android:indeterminateDrawable">@android:drawable/progress_large_white</item>        <item name="android:minWidth">76dip</item>        <item name="android:maxWidth">76dip</item>        <item name="android:minHeight">76dip</item>        <item name="android:maxHeight">76dip</item>    </style>        <style name="Widget.ProgressBar.Small">        <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item>        <item name="android:minWidth">16dip</item>        <item name="android:maxWidth">16dip</item>        <item name="android:minHeight">16dip</item>        <item name="android:maxHeight">16dip</item>    </style>


     其中"android:indeterminateDrawable"属性定义了progressbar的动画效果,progress_small_white定义在frameworks\base\core\res\res\drawable\下,自定义动画其实就是在drawable文件夹下自定义新的动画文件。

    

<?xml version="1.0" encoding="utf-8"?><!--/***** Copyright 2009, 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.*/--><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/spinner_black_48"    android:pivotX="50%"    android:pivotY="50%"    android:framesCount="12"    android:frameDuration="100" />

    系统定义的为属性动画,我们可以自己更换一张图片就行旋转,或者定义其他动画,包括帧动画来实现更复杂的动画效果。注意在新建帧动画时,要把帧动画的每一张图片在public.xml下进行注册,不能直接模仿系统的定义方法。


1 0
原创粉丝点击