android-Android进程条从0跳到100

问题描述

Android进程条从0跳到100

AsyncTask代码如下,文件更新什么的都正常,就是想实现一个进度条时,直接从0跳到100了。

怎么办?

public class UploadingAsync extends AsyncTask<String, Integer, Object> {

  ProgressDialog dialog;
  BaseActivity base;

  public FileUploadAsyncTask(BaseActivity base) {
    this.base = base;
  }

  @Override
  protected Object doInBackground(String... path) {
    try {
      DroplrApp api = ((DroplrApplication) base.getApplication()).getDroplrAppApi();

      File file = new File(path[0]);

      Log.e("File uploaded", file.getAbsolutePath().toString());

      api.upload(file, new DroplrAppProgressListener() {

        @Override
        public void transferred(long transfer, long total) {
          publishProgress((int) (total * 100 / transfer));
        }
      });
    } catch (DroplrAppException e) {
      Log.e("Something is wrong", "Problem uploading");
    }

    return null;
  }

  @Override
  protected void onPreExecute() {
    super.onPreExecute();
    dialog = new ProgressDialog(base);
    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage("Uploading...");
        dialog.setIndeterminate(false);
        dialog.setCancelable(false);
        dialog.setMax(100);
        dialog.setProgress(0);
        dialog.show();
  }

  @Override
  protected void onPostExecute(Object result) {
    super.onPostExecute(result);
    dialog.dismiss();
  }

  @Override
  protected void onProgressUpdate(Integer... progress) {
    super.onProgressUpdate(progress);
    Log.e("progress", progress[0].toString());
    dialog.setProgress(progress[0]);
  }

}

Log.e("progress", progress[0].toString()); 的输出:

前面都省略了。
06-08 15:24:13.223: E/progress(13418): 102
06-08 15:24:13.223: E/progress(13418): 102
06-08 15:24:13.223: E/progress(13418): 101
06-08 15:24:13.223: E/progress(13418): 101
06-08 15:24:13.223: E/progress(13418): 100
06-08 15:24:13.603: E/progress(13418): 100

06-08 15:24:13.648: E/progress(13418): 100

解决方案

这行:

publishProgress((int) (total * 100 / transfer));

应该是:

(int)(((float)transfer * 100f) / (float)total)
时间: 2024-10-27 16:37:26

android-Android进程条从0跳到100的相关文章

Android 获取进程内存使用情况方法

ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); Log.i(TAG, " memoryInfo.availMem " + memoryInfo.

Android 跨进程通Messenger(简单易懂)_Android

不需要AIDL也不需要复杂的ContentProvider,也不需要SharedPreferences或者共享存储文件! 只需要简单易懂的Messenger,它也称为信使,通过它可以在不同进程中传递message对象,在message中放入我们需要传递的数据你就可以实现跨进程通讯和传递数据.废话不多说,直接上代码. 首先是服务端: public class Ser extends Service{ @Override public IBinder onBind(Intent intent) {

Android ProgressDialog进度条使用详解_Android

进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍等待,进度条经常使用在APP下载应用.更新应用.加载网络数据中,使用频繁,常见的进度条有ProgressDialog.ProgressBar,这里只要介绍ProgressDialog. ProgressDialog读取文件进度解析主要涉及到一个知识: Handler消息处理机制, 文件字节流的操作, ProgressDialog类的使用 1.Handler消

Android新闻广告条滚动效果_Android

项目中需要用到类似公告栏的控件,能用的基本不支持多行显示,于是只好自己动手,苦于没有自定义过一个像样的控件,借鉴Android公告条demo,实现了多行向上滚动的控件.在原控件基础之上添加如下功能:  •传入数据分页显示  •添加Left Drawable  •手指触摸事件处理  •添加3D动画翻滚效果 效果图 源码 package com.android.view; import android.content.Context; import android.content.res.Typed

我的Android进阶之旅------&amp;gt;Android之拖动条(SeekBar和RatingBar)的功能和用法

简介       下面通过一个使用拖动滑块改变图片透明度的实例来学习SeekBar和RatingBar step1:新建一个项目MySeekBar step2:编写应用的UI界面 a.   /layout/seekbar.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and

位图-android为啥这条语句老是报内存溢出错误?

问题描述 android为啥这条语句老是报内存溢出错误? Bitmap bm = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 就是这条语句,经常报java.lang.outofMemoryError错误?各位大牛谁知道,可以改一个其他的方法吗? 解决方案 是不是因为你的图片太大了,把它换为android自带的图标试试.或者直接使用Canvas.drawBitmap(

我的Android进阶之旅------&amp;gt;Android之进度条(ProgressBar)的功能和用法

一.简介        进度条是UI界面中一种非常实用的组件,退出用于向用户显示某个比较耗时间的操作完成的百分比.因此进度条可以动态的显示进度,避免长时间地执行某个耗时操作, 让用户感觉程序失去了响应,从而更好的提高用户界面的友好性.         Android支持几种风格的进度条,通过style属性可以为Progress指定风格.该属性可以支持如下几个属性值.        除此之外,ProgressBar还支持下图所示常用的XML属性值. 还有一种进度条,它可以直接在窗口标题上显示,这种

Android文件下载进度条的实现代码_Android

main.xml: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_paren

Android自定义进度条的圆角横向进度条实例详解_Android

1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色,第二层为灰色,最上一层为进度条颜色,示例图如下: 3.效果图   实现圆角进度条还有很多其他方法,比如在Progress控件里填充圆角图片,通过拉伸图片来达到预想的效果,虽然听起来很简单,但实现起来还是有些麻烦的. 4.解说方法 (1)invalidate()方法 invalidate()是用来刷新