本文实例为大家分享了Android实现圆线按钮进度效果的具体代码,供大家参考,具体内容如下

先看效果图:

这是一个在github上的开源控件按钮View(点击此处查看),同时带有进度。

使用方法:把该项目从github上下载下来导入到eclipse,然后作为库,接下来在其他项目中直接引用即可。然而,我感觉原生项目中的个别细节代码不是太完善,我在它的MasterLayout.java类增加了一些字段和方法:

// 增加的值,by Phil
 public static final int START = 1, PAUSE = 2, COMPLETE = 3;
 
 // 增加的方法,by Phil
 public int getState() {
 return flg_frmwrk_mode;
 }

新增加的值和方法主要用于判断当前View的状态。

现在给出一个经过我改进后的使用实例:

package zhangphil.progressbutton;
 
import com.thbs.progressbutton.MasterLayout;
 
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
 
public class MainActivity extends ActionBarActivity {
 
 private MasterLayout masterLayout;
 private LongTimeOperationTask mTask;
 
 // 显示进度文字
 private TextView tv;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 masterLayout = (MasterLayout) findViewById(R.id.progress);
 masterLayout.setOnClickListener(new View.OnClickListener() {
 
 @Override
 public void onClick(View v) {
 
 // 必须有该方法,该方法是动画进度的开始。
 // 当用户点击该按钮后立即执行。
 masterLayout.animation();
 
 // 此处的判断代码是根据当前的View类型判断的。
 // 如果当前View是开始的那个icon,并且用户点击了,那么就开始。
 // 在次完成用户的耗时操作,比如下载任务等。
 if (masterLayout.getState() == MasterLayout.START) {
 Toast.makeText(MainActivity.this, "开始...",
 Toast.LENGTH_SHORT).show();
 
 mTask = new LongTimeOperationTask();
 mTask.execute();
 }
 
 // 用户点击了 停止 按钮。取消任务。
 if (masterLayout.getState() == MasterLayout.PAUSE) {
 if (mTask != null
 && mTask.getStatus() == AsyncTask.Status.RUNNING)
 mTask.cancel(true);
 
 // reset()是将该空间复位到最初始化的阶段。
 masterLayout.reset();
 
 Toast.makeText(MainActivity.this, "停止!", Toast.LENGTH_SHORT)
 .show();
 }
 
 // 此处的View控件显示是一个 对号 icon。
 if (masterLayout.getState() == MasterLayout.COMPLETE) {
 Toast.makeText(MainActivity.this, "完成!", Toast.LENGTH_SHORT)
 .show();
 }
 }
 });
 
 tv = (TextView) findViewById(R.id.tv);
 }
 
 private class LongTimeOperationTask extends
 AsyncTask<String, Integer, String> {
 
 @Override
 protected void onPreExecute() {
 
 }
 
 @Override
 protected String doInBackground(final String... args) {
 
 // 进度以百分制标识。
 for (int i = 0; i <= 100; i  ) {
 SystemClock.sleep(100);
 
 publishProgress(i);
 }
 
 return null;
 }
 
 @Override
 protected void onProgressUpdate(Integer... progress) {
 
 // 此处的 setupprogress 更新圆形按钮的进度。
 masterLayout.cusview.setupprogress(progress[0]);
 
 // 额外的一个TextView显示进度。
 tv.setText(progress[0]   " %");
 }
 }
}

activity_main.xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 
 <com.thbs.progressbutton.MasterLayout
 android:id="@ id/progress"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:clickable="true" />
 
 <TextView
 android:id="@ id/tv"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:gravity="center"
 android:text="10%" />
 
</LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

Android实现圆线按钮进度效果的更多相关文章

  1. HTML5 input新增type属性color颜色拾取器的实例代码

    type 属性规定 input 元素的类型。本文较详细的给大家介绍了HTML5 input新增type属性color颜色拾取器的实例代码,感兴趣的朋友跟随脚本之家小编一起看看吧

  2. amazeui模态框弹出后立马消失并刷新页面

    这篇文章主要介绍了amazeui模态框弹出后立马消失并刷新页面,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 移动HTML5前端框架—MUI的使用

    这篇文章主要介绍了移动HTML5前端框架—MUI的使用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. html5 canvas合成海报所遇问题及解决方案总结

    这篇文章主要介绍了html5 canvas合成海报所遇问题及解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  7. AmazeUI 模态窗口的实现代码

    这篇文章主要介绍了AmazeUI 模态窗口的实现代码,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  9. ios – UIPopoverController出现在错误的位置

    所以我花了一些时间寻找答案,但到目前为止还没有找到任何答案.我正在尝试从UIInputAccessoryView上的按钮呈现弹出窗口.UIBarButtonItem我想显示popover来自定制视图,所以我可以使用图像.我创建这样的按钮:当需要显示popover时,我这样做:但我得到的是:弹出窗口看起来很好,但它应该出现在第一个按钮上时出现在第二个按钮上.然后我发现了这个问题:UIBarButto

  10. ios – 关闭UIBarButtonItem上的突出显示

    我正在尝试使用UIBarButtonItem在我的UIToolbar上添加标题.我使用简单的风格,看起来很好,但我似乎无法让它停止突出显示触摸.“突出显示时触摸”选项不适用于条形按钮项目.有没有快速简便的方法来做到这一点?

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部