android 自己定义水平和圆形progressbar 仅仅定义一些style就能够
效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
改动progressbar 让他满足自己的需求一般来说仅仅改动一下,progressbar的style就能够满足需求了:
activity代码:只显示一个布局而已
package com.example.testcustomprogressbar; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
xml界面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testcustomprogressbar.MainActivity" > <ProgressBar
android:id="@+id/my_customprogressbar1"
style="@style/mycustom_progressbar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" /> <ProgressBar
android:id="@+id/my_customprogressbar2"
style="@style/mycustom_progressbar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/my_customprogressbar1"
android:layout_below="@+id/my_customprogressbar1"
android:layout_marginTop="26dp" /> <ProgressBar
android:id="@+id/my_customprogressbar3"
style="@style/mycustom_progressbar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/my_customprogressbar2"
android:layout_below="@+id/my_customprogressbar2"
android:layout_marginTop="26dp" /> <ProgressBar
android:id="@+id/my_customprogressbar4"
style="@style/mycustom_progressbar_hor"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/my_customprogressbar3"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:max="100"
android:progress="40"
android:secondaryProgress="60" /> <ProgressBar
android:id="@+id/my_customprogressbar5"
style="@style/mycustom_progressbar_hor2"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/my_customprogressbar4"
android:layout_below="@+id/my_customprogressbar4"
android:layout_marginTop="26dp"
android:max="100"
android:progress="40"
android:secondaryProgress="60" /> </RelativeLayout>
第一种圆形progressbar 只让一个图片旋转起来:
style的代码:
<style name="mycustom_progressbar1">
<item name="android:indeterminateDrawable">@drawable/progressbar_ver_image</item>
<item name="android:minHeight">30dp</item>
<item name="android:minWidth">30dp</item>
<item name="android:maxHeight">60dp</item>
<item name="android:maxWidth">60dp</item>
</style>
progressbar_ver_image的代码:
<? xml version="1.0" encoding="utf-8"?>
<!-- 定义一个旋转的动画 ,图片是我们自己定义的-->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/resizeapi"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" > </rotate>
另外一种圆形progressbar 使用一个动画:
style:
<style name="mycustom_progressbar2">
<item name="android:indeterminateDrawable">@drawable/progressbar_ver_animation</item>
<item name="android:minHeight">60dp</item>
<item name="android:minWidth">60dp</item>
<item name="android:maxHeight">100dp</item>
<item name="android:maxWidth">100dp</item>
</style>
progressbar_ver_animation的代码:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:drawable="@drawable/ok1"
android:duration="250"/>
<item
android:drawable="@drawable/ok2"
android:duration="250"/>
<item
android:drawable="@drawable/ok3"
android:duration="250"/>
<item
android:drawable="@drawable/ok4"
android:duration="250"/> </animation-list>
第三种圆形progressbar 使用shape来构建drawable:
<style name="mycustom_progressbar3">
<item name="android:indeterminateDrawable">@drawable/progressbar_ver_shape</item>
<item name="android:minHeight">60dp</item>
<item name="android:minWidth">60dp</item>
<item name="android:maxHeight">100dp</item>
<item name="android:maxWidth">100dp</item>
</style>
progressbar_ver_shape的代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- 定义一个旋转的动画 ,图片是我们自己定义的shape -->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<gradient
android:centerColor="#FFFFFF"
android:centerY="0.50"
android:endColor="#1E90FF"
android:startColor="#000000"
android:type="sweep"
android:useLevel="false" />
</shape> </rotate>
第四种: 横向progressbar 复制粘贴系统的style,然后改动:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ffff0000"
android:centerColor="#ffff0000"
android:centerY="0.75"
android:endColor="#ffff0000"
android:angle="270"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#800000ff"
android:centerColor="#800000ff"
android:centerY="0.75"
android:endColor="#800000ff"
android:angle="270"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress"
>
<clip >
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff00ff00"
android:centerColor="#ff00ff00"
android:centerY="0.75"
android:endColor="#ff00ff00"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
这样直接在progressbar中引用该style就能够满足需求了,当然我们也能够把progressbar background progress secondprogress都分别定义成一个drawable,然后使用:
background:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="5dip" />
<gradient
android:angle="270"
android:centerColor="#ffff0000"
android:centerY="0.75"
android:endColor="#ffff0000"
android:startColor="#ffff0000" />
</shape>
progress:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="5dip" />
<gradient
android:angle="270"
android:centerColor="#ff00ff00"
android:centerY="0.75"
android:endColor="#ff00ff00"
android:startColor="#ff00ff00" />
</shape>
secondprogress:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="5dip" />
<gradient
android:angle="270"
android:centerColor="#800000ff"
android:centerY="0.75"
android:endColor="#800000ff"
android:startColor="#800000ff" />
</shape>
这个时候style中的代码就会清晰一点:
<? xml version="1.0" encoding="utf-8"? >
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@android:id/background"
android:drawable="@drawable/progressbar_hor_bg">
</item>
<item android:id="@android:id/secondaryProgress">
<clip android:drawable="@drawable/progressbar_hor_second_progress" >
</clip>
</item>
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/progressbar_hor_progress" >
</clip>
</item> <!-- progress 这个地方原作者写的是一个点9的图-->
<!-- <item android:id="@android:id/progress">
<clip>
<nine-patch android:src="@drawable/progress_patch_galy" />
</clip>
</item> -->
</layer-list>
嘿嘿..最后,做人要厚道:神一般男人的原博主博文连接http://blog.csdn.net/mad1989/article/details/38042875
对了,代码还是贴上来吧.总感觉在ide中直接看代码会更舒服一些:http://download.csdn.net/detail/u010399316/9000197
android 自己定义水平和圆形progressbar 仅仅定义一些style就能够的更多相关文章
- Android圆形图片--自己定义控件
Android圆形图片控件效果图例如以下: 代码例如以下: RoundImageView.java package com.dxd.roundimageview; import android.con ...
- Android 圆形ProgressBar风格设置
Android系统自带的ProgressBar风格不是很好,如果想自己设置风格的话,一般有几种方法.首先介绍一下第一种方法通过动画实现.在res的anim下创建动画资源loading.xml: < ...
- Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸
Android特效专辑(五)--自定义圆形头像和仿MIUI卸载动画-粒子爆炸 好的,各位亲爱的朋友,今天讲的特效还是比较炫的,首先,我们会讲一个自定义圆形的imageView,接着,我们会来实现粒子爆 ...
- 自定义的圆形ProgressBar
之前已经详细讲解过自定义控件的使用方式了.这里我单独把定以好的控件列出来. 之前定义的各式各样的ProgressBar http://www.cnblogs.com/tianzhijiexia ...
- 【Android自己定义View实战】之自己定义超简单SearchView搜索框
[Android自己定义View实战]之自己定义超简单SearchView搜索框 这篇文章是对之前文章的翻新,至于为什么我要又一次改动这篇文章?原因例如以下 1.有人举报我抄袭,原文链接:http:/ ...
- 实现android手机来电拦截系统页面弹出自定义页面特效
如何实现android手机来电拦截系统页面弹出自定义页面特效, 首先: 我们需要注册一个监听来电的广播PhoneStateReceiver 类:其次: 在onReceive里面我们获取an ...
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
Android中的ImageView只能显示矩形的图片,为了用户体验更多,Android实现圆角矩形,圆形或者椭圆等图形,一般通过自定义ImageView来实现,首先获取到图片的Bitmap,然后通过 ...
- Android改变系统自带环形ProgressBar的大小
MainActivity如下: package cc.testprogressbar; import android.os.Bundle; import android.app.Activity; / ...
- Android OpenGL ES(七)基本几何图形定义 .
在前面Android OpenGL ES(六):创建实例应用OpenGLDemos程序框架 我们创建了示例程序的基本框架,并提供了一个“Hello World”示例,将屏幕显示为红色. 本例介绍Ope ...
随机推荐
- 微信小程序---代码构成
通过开发者工具快速创建了一个demo项目,观察后可以发现这个项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS ...
- 搜索 || DFS || POJ 2488 A Knight's Journey
给一个矩形棋盘,每次走日字,问能否不重复的走完棋盘的每个点,并将路径按字典序输出 *解法:按字典序输出路径,因此方向向量的数组按字典序写顺序,dfs+回溯,注意flag退出递归的判断,并且用pre记录 ...
- There is no Action mapped for namespace [/] and action name [updateUser] associated with context path [].
在使用Struts2的时候,遇到了这个问题. 原因分析: 找不到指定的路径, 那么就是struts.xml的内容问题, 或者是struts.xml的文件位置存在问题. struts2默认是应该放在sr ...
- [JOYOI] 1415 西瓜种植
题目描述 笨笨种了一块西瓜地,但这块西瓜地的种植范围是一条直线的-- 笨笨在一番研究过后,得出了m个结论,这m个结论可以使他收获的西瓜最多. 笨笨的结论是这样的: 从西瓜地B处到E处至少要种植T个西瓜 ...
- tomcat创建用户
进入manager App时需要用户名+密码 输入错误时会出现页面如下: 根据提示去服务器中找到tomcat目录下的tomcat-user.xml文件 在指定位置添加语句 <user use ...
- python中的多任务
多任务 什么是任务 一个电脑运行这的软件 什么是多任务 电脑同时运行着的多个软件 多任务原理 时间片的轮转 并行与并发 并发:假的多任务,多个任务共用一个核 并行:正的多任务,一个核处理一个程序 生理 ...
- LeetCode (32) Longest Valid Parentheses
题目 Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...
- POJ 2342 Anniversary party (树形DP入门)
题意: 给定一个上下属的关系树, 每个人有一个活跃值, 现在要参加一个派对, 每个人都不会和自己的上属参加派对(上属参加了,下属就不能参加了), 求参加派对的最大活跃值 分析: 枚举每个节点取与不取得 ...
- 3. express 框架使用 vue框架 weiUI
express 1. 安装 npm install express --save 2. 创建项目 vue js 安装Vuejs vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue- ...
- CactiI表结构和数据被动获取
cacti我们也用了很久了,但是它的表结构一直都没有去关心过,得空抽了半个晚上的时间,把它的库表结构大概看了下,某些字段的含义跟大家分享下:cacti的数据都是存放在rrdtool中的,数据库存放的其 ...