效果图:

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. Shell转大写为小写

    #!/bin/bash # read a a=$(echo "$a" | awk '{print tolower($0)}') #转大写为小写 if [[ $a = 'y' || ...

  2. AT2663 Namori Grundy

    题目描述: luogu 题解: 好多细节,比如说每个点有且仅有一条入边. 所以说这个图一定是一个基环外向树. 考虑只是一个环的情况,我们可以发现,当环长为偶数时我们可以$01$交替染色,但环长为奇数时 ...

  3. Oracle 11G RAC For ASM 利用RMAN COPY进行存储迁移

    转载请注明出处 一.需求背景 客户数据库存储空间接近存满,需购置一台新的存储,进行数据迁移,客户允许少量停机时间. 二.实施方法讨论 利用ASM rebalance 进行迁移 可以实现0宕机进行迁移, ...

  4. python-----定制群发微信消息

    如何使用表格中的信息群发微信消息? 如何读取csv? →   使用内置模块csv 如何按对应信息发送到微信?→  使用第三方库wxpy 以下代码素材自取:链接:https://pan.baidu.co ...

  5. Spring Boot集成百度Ueditor

    遇到的问题: 1.将ueditor加入/static目录下,能正常显示,但是出现“请求后台配置项http错误,上传功能将不能正常使用!”(解决在下面,都是自定义上传的,如果需要官方的示例,我也无能为力 ...

  6. Centos 虚拟机 和宿主机 文件共享

    我虚拟机下安装的是一个命令行式的centos ,想要把虚拟机里面的源文件移到宿主机上.于是我就想着搞一个文件共享. 网上有很多办法,比如Samba .ftp之类的.我选择了vmware自带的文件共享功 ...

  7. Linux使用yum命令安装软件时,连接不了网路报错:ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

    错误: 解决方案: 在/etc/sysconfig/network-scripts/ifcfg-eth0文件中配置DNS信息: vim /etc/sysconfig/network-scripts/i ...

  8. cf839c Journey

    大水题 #include <iostream> #include <cstdio> using namespace std; int n, du[100005], hea[10 ...

  9. bzoj1059:[ZJOI2007]矩阵游戏【二分图匹配】

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...

  10. bzoj5106 [CodePlus2017]汀博尔 二分

    [CodePlus2017]汀博尔 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 75[Submit][Status][Di ...