Android 中framework层替换系统progressbar
2015-11-16 14:53
381 查看
在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下进行注册,不能直接模仿系统的定义方法。
<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下进行注册,不能直接模仿系统的定义方法。
相关文章推荐
- Android view变化监听器 ViewTreeObserver( oncreate获取view信息)
- Android开发:shape和selector和layer-list的使用
- Android中自定义仿IOS回弹效果的ListView
- android.view.InflateException: Binary XML file line #16: Error inflating cla
- Android使用到的Java基础——导包,package,import的使用
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- android代码签名和混淆打包
- (转)Android性能优化——工具篇
- android 杂记
- android中handler用法总结
- Android学习方法-----心得
- 一些android笔记
- 说说Android应用的persistent属性
- Android超轻量下拉刷新、上拉加载更多控件,已完美适配ListView
- Android百度地图导航SDK2.0 定位SDK6.0.5的导航参数设置方法
- Android studio小技巧之xml与Java类快速跳转
- <android5.0>之共享元素
- Android日志打印与处理 UncaughtExceptionHandler 提交服务器
- Android中Bitmap和Drawable
- Android动画之属性动画(Property Animation)(二)