Android使用Xutil3.0下载文件.md

Android使用Xutil3.0下载文件.md

新建项目:

引入依赖:

 implementation 'org.xutils:xutils:3.5.0'
添加权限:
  <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
修改文件:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <Button
        android:id="@+id/xiazai"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下载测试按钮"
        />

    <ProgressBar
        android:id="@+id/prg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        />


</LinearLayout>

MainActivity:

package com.example.administrator.xutilstest;

import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

import org.xutils.common.Callback;
import org.xutils.ex.HttpException;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.io.File;

public class MainActivity extends AppCompatActivity {

    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressBar  = findViewById(R.id.prg);

        x.Ext.init(getApplication());
        x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.


        Button button = findViewById(R.id.xiazai);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = "http://localhost:8080/gh.zip";

                RequestParams params = new RequestParams(url);


                // 默认缓存存活时间, 单位:毫秒(如果服务器没有返回有效的max-age或Expires则参考)
                params.setCacheMaxAge(1000 * 60);

                x.http().get(params, new Callback.ProgressCallback<File>() {
                    @Override
                    public void onSuccess(File result) {
                        System.out.println("下载成功");
                    }

                    @Override
                    public void onError(Throwable ex, boolean isOnCallback) {

                    }

                    @Override
                    public void onCancelled(CancelledException cex) {

                    }

                    @Override
                    public void onFinished() {

                    }

                    private boolean hasError = false;
                    private String result = null;
                    @Override
                    public void onWaiting() {

                    }

                    @Override
                    public void onStarted() {

                        System.out.println("开始下载");
                    }

                    @Override
                    public void onLoading(long total, long current, boolean isDownloading) {
                        progressBar.setMax((int) total);
                        progressBar.setProgress((int) current);

                    }

                });
            }
        });
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android知识点总结

Android原生下载(下篇)多文件下载+多线程下载

55440
来自专栏ATYUN订阅号

DeepMind将部分健康业务移交谷歌,包括其开发AI应用Stream的团队

Deepmind宣布,移动应用程序Streams背后的团队将加入谷歌,这一程序可以帮助医生和护士为患者提供更快,更好的护理。

9720
来自专栏Android知识点总结

Android原生绘图之炫酷倒计时

66740
来自专栏Spring相关

创建一个Android项目

Generate Layout File勾选的话会默认创一个默认的布局,launcher Activity只的是把当前的类当做主活动

12740
来自专栏腾讯开源的专栏

提高iOS UI开发效率的解决方案QMUI iOS开源

QMUI 致力于提高各个平台的 UI 开发效率,目前 Web、iOS、Android 三个平台对应的框架均已在 Github 开源。 本文将着重介绍 QMUI...

35330
来自专栏Spring相关

Android的相关事件

res下新建一个Director,名为menu,在menu中建一个main的menuresourceFile(右键新建即可)

9220
来自专栏Spring相关

Android引入布局

14910
来自专栏我就是马云飞

Gradle 提速:每天为你省下一杯喝咖啡的时间

作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如:

15930
来自专栏Spring相关

探究Android活动的小技巧

当我们在查看别人的代码的时候可能不能第一眼就发现首次的活动是哪一个,我们可以通过以下的方法来找出当前的主活动是哪一个:

9420
来自专栏Android 开发者

打造低延迟互动音频: Oboe

如果您有玩音乐游戏,或者音乐软件 (如 DJ 或者合成器) 的话,绝对会对音频的延迟深恶痛绝——延迟不但会让您对自己的操作不再自信,更会摧毁一段被打磨了很久的旋...

20720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励