效果图:

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就能够的更多相关文章

  1. Android圆形图片--自己定义控件

    Android圆形图片控件效果图例如以下: 代码例如以下: RoundImageView.java package com.dxd.roundimageview; import android.con ...

  2. Android 圆形ProgressBar风格设置

    Android系统自带的ProgressBar风格不是很好,如果想自己设置风格的话,一般有几种方法.首先介绍一下第一种方法通过动画实现.在res的anim下创建动画资源loading.xml: < ...

  3. Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸

    Android特效专辑(五)--自定义圆形头像和仿MIUI卸载动画-粒子爆炸 好的,各位亲爱的朋友,今天讲的特效还是比较炫的,首先,我们会讲一个自定义圆形的imageView,接着,我们会来实现粒子爆 ...

  4. 自定义的圆形ProgressBar

        之前已经详细讲解过自定义控件的使用方式了.这里我单独把定以好的控件列出来. 之前定义的各式各样的ProgressBar http://www.cnblogs.com/tianzhijiexia ...

  5. 【Android自己定义View实战】之自己定义超简单SearchView搜索框

    [Android自己定义View实战]之自己定义超简单SearchView搜索框 这篇文章是对之前文章的翻新,至于为什么我要又一次改动这篇文章?原因例如以下 1.有人举报我抄袭,原文链接:http:/ ...

  6. 实现android手机来电拦截系统页面弹出自定义页面特效

    如何实现android手机来电拦截系统页面弹出自定义页面特效, 首先:    我们需要注册一个监听来电的广播PhoneStateReceiver 类:其次:    在onReceive里面我们获取an ...

  7. Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示

    Android中的ImageView只能显示矩形的图片,为了用户体验更多,Android实现圆角矩形,圆形或者椭圆等图形,一般通过自定义ImageView来实现,首先获取到图片的Bitmap,然后通过 ...

  8. Android改变系统自带环形ProgressBar的大小

    MainActivity如下: package cc.testprogressbar; import android.os.Bundle; import android.app.Activity; / ...

  9. Android OpenGL ES(七)基本几何图形定义 .

    在前面Android OpenGL ES(六):创建实例应用OpenGLDemos程序框架 我们创建了示例程序的基本框架,并提供了一个“Hello World”示例,将屏幕显示为红色. 本例介绍Ope ...

随机推荐

  1. 监控java进程是否正常运行

    @echo off set _task=java.exe :checkstart for /f "tokens=1" %%n in ('tasklist ^| find " ...

  2. HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)

    题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...

  3. SCOI2013 数数

    题目描述 题解: 很玄学的一道数位$dp$,看了很多篇题解才懂. 直接挂$l$的题解. 代码: #include<cstdio> #include<cstring> #incl ...

  4. docker-machine 快速搭建docker环境

    环境:腾讯云测试成功 1.条件:本地主机A和远程主机B 2.远程主机B,配置免密登录 1,在本地主机A上生成公钥和私钥,生成命令:ssh-keygen -t rsa 私钥:id_rsa 公钥:id_r ...

  5. 15. PARTITIONS

    15. PARTITIONS PARTITIONS表提供有关表分区的信息. 此表中的每一行对应于分区表的单个分区或子分区. 有关分区表的更多信息,请参见分区. PARTITIONS表有以下列: TAB ...

  6. CSS3---圆角设置

    1.border-radius是向元素添加圆角边框.border-radius:10px; /* 所有角都使用半径为10px的圆角 */     border-radius: 5px 4px 3px ...

  7. python 闭包&装饰器(一)

    一.闭包 1.举例 def outer(): x = 10 def inner(): # 内部函数 print(x) # 外部函数的一个变量 return inner # 调用inner()函数的方法 ...

  8. django的基本操作流程

    pip   install django cd Desktop/课上代码02/ #进入到创建项目的目录   django-admin startproject 项目的名称  #创建项目   __ini ...

  9. 【实验吧】Just Click

    拿到答案需要正确地点击按钮 格式:simCTF{ } 解题链接: http://ctf5.shiyanbar.com/re/rev4.exe 由于最近在学数据库是c#编程,发现是c#,于是用.net ...

  10. virtualbox创建虚机后配置网络上网

    一般来说常用的会配置两个网卡:(两个网卡应该在安装虚拟机之前就设置好) 1.NAT网络: 用于上外网: 2.host-only: 用于ssh连接,可以被其他人远程访问. 前提: 如图:在virtual ...