Xutils学习,个人学习,不断添加内容

android studio中导入xUtils和xUtils3开源库 前题:xUtils和xUtils3是不一样的,xUtils3是xUtils的升级版,下面是分别导入的方法导入xUtils在github上下载下来xUtils,发现那个library不能被android studio识别为库文件,不能直接用import Module方法导入,因为少了build.gradle文件吧。所以我直接将下载下文件中的的xUtils-2.6.14.jar 这个jar包复制到对应M 阅读详情

说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的问题。


我总是喜欢用一些最新的东西,xUtils 3.0才刚更新,是一次比较大的重构,对于百度到的使用规则,基本都是3.0以前的,使得用3.0的开发者需要求解用法的时候,遇到许多阻碍,故此在这里简单介绍xUtils 3.0的使用规则。关于怎么导入功能,其实并不是本文的内容,不过在此文最后一节简单讲解了一下导入的方式。


1.xUtils中的IOC框架


使用xUtils的第一步就是必须创建自己的Application类,代码如下:


public class LYJApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);//Xutils初始化
    }
}


在AndroidManifest.xml的application标签中添加如下代码:


Android:name=".LYJApplication"


这样初始化就算完成了。


使用IOC框架的代码如下:


import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;
@ContentView(value = R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
    @ViewInject(value = R.id.mybut)
    private Button mybut;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        x.view().inject(this);
    }
    @Event(value = R.id.mybut,type = View.OnClickListener.class)
    private void onButtonClick(View v){
        switch (v.getId()){
            case R.id.mybut:
                Toast.makeText(this,"你好我是Xutils的IOC功能",Toast.LENGTH_SHORT).show();
                break;
        }
    }
}


需要解释的以下几点:


其一:使用IOC必须全部为私有,不然无效,这里就做演示了,不信你可以把用到IOC框架的注解的成员变量及方法全部换成public ,那么全部会无效,当然除了ContentView例外。


其二,所有用到IOC成员变量,使用的时候,必须在x.view().inject(this)后,如果写在前面,那么程序会崩溃。


2.xUtils加载图片功能


现在我们需要设置两个权限,如下:


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


接下来就是加载网络图片到imageView中:


x.image().bind(image,"http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg");


也可以设置参数:


ImageOptions imageOptions = new ImageOptions.Builder()
        .setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//图片大小
        .setRadius(DensityUtil.dip2px(5))//ImageView圆角半径
        .setCrop(true)// 如果ImageView的大小不是定义为wrap_content, 不要crop.
        .setImageScaleType(ImageView.ScaleType.CENTER_CROP)
        .setLoadingDrawableId(R.mipmap.ic_launcher)//加载中默认显示图片
        .setFailureDrawableId(R.mipmap.ic_launcher)//加载失败后默认显示图片
        .build();
x.image().bind(image, "http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg",imageOptions);


你也可以将第2个参数设置为图片文件路径,那么将从SD卡中加载图片。




图片加载模块:

x.image().bind(imageView, url, imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "assets://test.gif", imageOptions);
x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});

加载图片回调:

x.image().bind(imageView, "/sdcard/cldvision/localdownload/191b6bad9ae0420fa696c130b535459d.jpg",imageOptions, new Callback.CommonCallback<Drawable>() {
    @Override
    public void onSuccess(Drawable result) {
        LogUtils.e("加载成功了啊");
    }

    @Override
    public void onCancelled(CancelledException cex) {

    }

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

    }

    @Override
    public void onFinished() {
        LogUtils.e("加载完成了啊");
    }
});


文件下载:

 @Event(type = View.OnClickListener.class, value = R.id.download)
    private void downLoadOnClick(View v) {
        String downUrl = "http://123.125.86.38/down.myapp.com/myapp/qqteam/AndroidQQ/mobileqq_android.apk?mkey=5462905c101807d1&f=d410&p=.apk";
        final ProgressDialog dia = new ProgressDialog(this);
        dia.setMessage("加载中....");
        dia.show();
        RequestParams params = new RequestParams(downUrl);
      i++;
        params.setAutoResume(true);//断点下载
        params.setSaveFilePath(Environment.getExternalStorageDirectory().getPath() + "/cldvision/+"+i+"uu.apk");
//        HttpUtils httpUtils=new HttpUtils();
//        httpUtils.d
        x.http().post(params,new Callback.ProgressCallback<File>(){
            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onStarted() {

            }

            @Override
            public void onWaiting() {

            }

            @Override
            public void onFinished() {

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                LogUtils.e("下载失败");
            }

            @Override
            public void onSuccess(File result) {
                LogUtils.e("下载成功"+result.getPath());
            }

            @Override
            public void onLoading(long total, long current, boolean isDownloading) {

            }
        });

    }

POST请求 :GET同理

RequestParams params;
    //HTTP请求之POST请求
    StringBuffer stringBuffer=new StringBuffer();
    @Event(type = View.OnClickListener.class, value = R.id.post)
    private void httpPostOnClick(View v) {
        String url = "this is request url for post";
        final ProgressDialog dia = new ProgressDialog(this);
        dia.setMessage("加载中....");
        dia.show();
          params = new RequestParams("http://cvds.cldvision.com/PlayerUI/PlayerDownloadList.aspx");
//        params.addParameter("Action", "Heartbeat");//添加Post请求参数,如果是get请求,会直接添加到url后面
//        params.addBodyParameter("playerid", "b8:36:d8:af:66:10");
        params.addParameter("playerid", "b8:36:d8:af:66:10");//添加Post请求参数,如果是get请求,会直接添加到url后面
        params.addBodyParameter("programid", "A22CC6CEED2120DF5B0F437D46C3CC5B");
//        params.addHeader("head", "给Head添加信息");//addHeader添加Head信息

        x.http().post(params, new  Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                //加载成功回调,返回获取到的数据

             System.out.println("我激素hi"+result);
                try {
//                    JSONObject jsonArray=new JSONObject(result);
//                   String str= jsonArray.getString("content");
//                    JSONObject jsonObject1=new JSONObject(str);
                    JSONArray jsonArray=new JSONArray(result);
                    for (int i=0;jsonArray.length()>i;i++){
                        JSONObject objJson = new JSONObject(jsonArray.getString(i));
                        stringBuffer.append("http://cvds.cldvision.com/"+objJson.getString("path"));
                        stringBuffer.append("|");

                    }
                    Log.i(TAG, "onSuccess: " + stringBuffer.toString());
                    textView.setText("请求返回数据"+result+"==="+"解析请求数据下载地址"+  stringBuffer.toString());
                    params.clearParams();
                    params=null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFinished() {
                dia.dismiss();//加载完成
            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

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

            }
        });
    }

3.xUtils操作数据库


我们都知道,一个App中操作数据库的地方有很多,就像是否登录一样,有些地方必须登录后才能操作,那么肯定是全局变量,所以,必须将数据库的初始化放在Application,且必须提供获取数据库的方法,使得在应用程序的任何地方都可以直接获取数据库,并操作数据库,不然重复的获取与释放只能增加内存无谓的消耗。


初始化数据库:


public class LYJApplication extends Application {
    private DbManager.DaoConfig daoConfig;
    public DbManager.DaoConfig getDaoConfig() {
        return daoConfig;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);//Xutils初始化
        daoConfig = new DbManager.DaoConfig()
                .setDbName("lyj_db")//创建数据库的名称
                .setDbVersion(1)//数据库版本号
                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                    @Override
                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                        // TODO: ...
                        // db.addColumn(...);
                        // db.dropTable(...);
                        // ...
                    }
                });//数据库更新操作
    }
}


上面的注释明了,有必要说明的一点是setDbDir(new File("/sdcard")),可以将数据库存储在你想存储的地方,如果不设置,那么数据库默认存储在/data/data/你的应用程序/database/xxx.db下。这里我们就默认放在应用程序下。


我们首先创建一个实体类,如下:


@Table(name="lyj_person")
public class LYJPerson {
    @Column(name = "id", isId = true)
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "age")
    private String age;
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


通过实体类可以直接操作数据库。


我们在Application中加入如下代码,向数据库添加数据:


DbManager db = x.getDb(daoConfig);
LYJPerson person1=new LYJPerson();
person1.setName("liyuanjinglyj");
person1.setAge("23");
LYJPerson person2=new LYJPerson();
person2.setName("xutilsdemo");
person2.setAge("56");
try {
    db.save(person1);
    db.save(person2);
} catch (DbException e) {
    e.printStackTrace();
}


在Activity中操作获取数据库数据的代码如下:


DbManager db = x.getDb(((LYJApplication)getApplicationContext()).getDaoConfig());
try {
    List<LYJPerson> lyjPersons=db.selector(LYJPerson.class).findAll();
    for (int i=0;i<lyjPersons.size();i++){
        Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getName());
        Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getAge());
    }
} catch (DbException e) {
    e.printStackTrace();
}


那么肯定会得到如下结果:



4.xUtils的网络请求


Android规定UI线程是不能涉及网络任务的,所以,这里主要简单介绍Xutils的异步网络请求,同步的自行探究。


使用格式如下:


RequestParams params = new RequestParams("http://blog.youkuaiyun.com/mobile/experts.html");
x.http().get(params, new Callback.CommonCallback<String>() {
    @Override
    public void onSuccess(String result) {
        Document doc = Jsoup.parse(result);
        Element div = doc.select("div.list_3").get(0);
        Elements imgs = div.getElementsByTag("img");
        for (int i = 0; i < imgs.size(); i++) {
            Element img = imgs.get(i);
            Log.i("liyuanjinglyj",img.attr("alt"));
        }
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(Callback.CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
});


这里获取的是优快云移动博客专家的HTML页面信息,看看下面的日志,就知道Xutils网络功能还是很强大的。



本文最后附带了一下粗略模仿优快云 APP的源码,有意者可以下载看看,里面用到另一个开发框架,我用来专门处理图片的(afinal)。都说xUtils是afinal的进化版,不过在图片方面,我们觉得xUtils还有点不足。


http://download.csdn.NET/detail/liyuanjinglyj/9379103


5..导入xUtils工程到Android Studio


下载地址如下:


https://github.com/wyouflf/xUtils3/tree/master


㈠将下载的工程复制到Project目录下:



㈡添加到settings.gradle文件:


include ':app',':xutils'


㈢编译到工程中


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile project(':xutils')
}


㈣将xutils文件夹下的build.gradle中的版本与最低版本调整到与创建工程一致


compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 20151224
    versionName version
}


㈤添加如下代码到build.gradle(Project:XutilsDemo)中


dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}


其中红色标记为添加的代码。


点击Sync now就可以使用xUtils了。

Android xUtils框架最全使用详解 本文目录xUtils3简介xUtils使用方法使用前准备功能1:访问网络不带参数的网络请求带参数的请求功能2:加载网络图片功能3:框架注解布局文件注解控件注解点击事件注解功能4:数据库映射增加数据删除数据修改数据查询数据 xUtils3简介 xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K), 并且特性强大, 方便扩展. 官网:https://github.com/wyouflf/xUtils3 xUtils使用方法 使用前准备 第一步:引入 implementation 'org.xutils:xutils:3.8.5' 第二步:添加权 立即下载

相关推荐

逆向分析美团外卖mtgsig3.0签名算法:从抓包到算法还原实战

在移动应用开发与安全领域,API接口签名是保障数据传输完整性与身份验证的核心机制。其基本原理是通过特定的算法,将请求参数、时间戳等数据与密钥结合,生成唯一的签名串,服务器通过验证签名来识别请求的合法性。这项技术的核心价值在于防止数据篡改、重放攻击和未授权访问,是构建安全客户端-服务器通信的基石。在实际应用中,签名算法广泛应用于电商、社交、金融等各类App的接口保护场景。本文以美团外卖App的mtgsig3.0签名为具体案例,详细拆解了其生成逻辑。通过结合Frida动态调试与Jadx静态分析,文章深入探讨了如

weixin_29325515的博客 1248

Android开源库——xUtils框架

xUtils框架 概述 主要是用于快速开发,相当于一个工具集? 终于有一个国人开发的了!!! 简介终于是中文的了,大部分介绍内容都是来自于项目地址上的介绍,可以跳过这部分 项目地址(旧版):https://github.com/qxbl/xUtils 项目地址(新版):https://github.com/wyouflf/xUtils3 xUtils2.x介绍 xUtils 2....

旧日灯塔 4645

运放专题:运算放大电路中的相位补偿

的方法

五花带点肉 2万+

xUtils详解

1. xUtils详解 xUtils是基于Afinal开发的目前功能比较完善的一个android开源框架 xUtils包含了orm、http(s)、image、view注解。 基于高效稳定的orm工具,http模块得以更加方便的实现cookie(支持domain、path、expiry)和缓存(Cache-Control、Last-Modified、ETag)的支持。 有强大的http及其下载缓...

Stc_LOokIN的博客 1393

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 920

CANoe信号波形分析保姆级教程:Graphic窗口从配置到实战避坑

本文详细解析了CANoe的Graphic窗口在信号波形分析中的高效配置与实战应用技巧。从信号显示模式选择、测量光标进阶操作到信号分组策略,提供工程化解决方案,帮助工程师快速定位总线信号异常,提升汽车电子开发与测试效率。

weixin_29279047的博客 269

xUtils框架

xUtils框架一.xUtils框架简介二.DbUtils模块简介实例三.ViewUtils模块简介实例四.HttpUtils模块简介实例五.BitmapUtils模块简介实例 一.xUtils框架简介 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响… xUt...

weixin_44275194的博客 1303

RT-DERT安卓部署教程

这个文档中的代码案例,实现了拍照和选图识别,两个功能,可以看效果图。UI做了美化:显示类别机和数量。代码下载地址:通过网盘分享的文件:android_rtdert.zip链接: https://pan.baidu.com/s/1k6e-d_lov1OPgUmit5i_cA?pwd=hpfi 提取码: hpfi–来自百度网盘超级会员v8的分享。

AIOT魔法师 196

常见Android开源框架使用笔记之——xUtils框架

初探xUtils框架,并介绍用法和简单分析

骑猪追大象 1万+

UCIE Specification详解(五)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1226

YOLOv8【第二章:卷积创新篇·第23节】一文搞懂,Transformer与卷积混合架构!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

**My Coding Family** 1388

xutils断点续传_Android使用Xutils3进行断点下载的实例

使用工具:Android studio 3.0使用方法:一:在build.gradle(Module:app)中添加依赖implementaion 'org.xutils:xutils:3.5.1'二:单独创建一个MyApp类初始化xutils,类名可自定义public class MyApp extends Application {@Overridepublic void onCreate()...

weixin_39682477的博客 128

古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法

   最近想在Gazebo中开发一些仿真内容,于是购买了古月学院的《如何在Gazebo中实现阿克曼转向车的仿真》课程,但是由于ROS 版本的更新,拿到手的课程资料不能直接在ROS Noetic版本中运行,经过我这几天的探索,对遇到的错误及解决方法进行了整理,方便后面购买课程的小伙伴更快的成功运行程序    在文章正式开始之前,先放一下我之前为了寻找该资料报错的原因,而写的两篇与该课程相关的文章链接,感兴趣的可以自行阅读    以阿克曼转向车为例对URDF和XACRO文件进行解读(点击可跳转)    将x

慕羽★的博客 5975

android xutils 教程,Android AS为xutils添加依赖过程图解

在使用xutils时遇到不能添加以来的问题,花了很长时间终于解决,网上添加依赖的方法很多,在此针对个人出现的问题作下笔记。我本想使用jar包,因为在使用smartImageView时是用的jar包来实现的,然而这次却不能实现,所以使用添加以来的方法。添加xutils依赖使用以下方法。网上查询的很多方法,但总是出现各种不同的问题,下面将个人遇到的问题及解决方法和步骤总结一下。第二步,将下载的源码中的...

weixin_42452924的博客 434

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

xutils找id空指针_初次使用xUtils3

################### region for xUtils-keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,Synthetic,EnclosingMethod-keep public class org.xutils.** {public protected *;}-keep publ...

weixin_42701905的博客 123

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Android】XUtils——你值得拥有!

XUtils使用详解一. XUtils是什么?简介使用前配置二.XUtils加载图片ImageOption加载网络图片加载Android资源图片加载sd卡图片三.XUtils请求网络RequestParamsget请求post请求四.使用总结 一. XUtils是什么? 简介 xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(251K), 并且特性强大, 方便扩展. orm: 高效稳定的orm工具, 使得http接口实现时更方便的支持cookie和缓存. 灵活的

weixin_43927892的博客 2908

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android 开发框架xUtils3

/ 这一步之后, 我们就可以在任何地方使用x.app()来获取Application的实例了// 是否输出日志View注解:@Override运行结果:—=以下是xUtils3官方说明文档=—xUtils中的任务和回调接口任务和回调是网络请求的基础接口, xUtils的任务接口支持异步和同步任务的实现.AsyncTask原因有几个方面, AsyncTask在各个版本系统中表现不一致, 包括默认任务的并发数, 是否可在子线程中使用等.可以在任何线程中直接使用.

2501_90229343的博客 1101

xUtils3框架的使用

xUtils3框架的使用标题一、原生http网络访问缺点二、 xUtils3简介三、使用步骤1.在项目的build.gradle中添加一个依赖2.添加权限3.MainActivity中添加四、 xUtils访问网络示例五、 xUitls框架-加载网络图片示例六、 xUitls框架注解(1)布局文件注解(2)控件注解(3)点击事件注解示例:七、文档八、交流群: 一、原生http网络访问缺点 二...

qq_45353823的博客 2617

xutils断点续传_xutils工具断点下载文件,android xutils3工具的使用

xutils是android中非常好用的一个文件断点上传下载工具,使用极其简单,现在已经更新到了android xutils3版本了,那么在android中如何实现文件的断点下载以及更新进度条的功能呢?可以参考下面的代码来操作,小编对xutils进行了简单的封装,大家可以直接复制过去使用!第一步:引入xutils工具,在build.gradle中加入xutils3工具的jar包implementa...

weixin_39588252的博客 282

XUTILS

XUtils基本操作使用Gradle构建时添加一下依赖即可:拿控件格式添加点击事件格式HttpUtils(get和post)DBUtilsBean类是关键DownLoadUtils 断点续传INTERESTING!!!! xUtils 包含了很多实用的android工具. xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支...

qiu_suo的博客 1033

Android-xUtils-数据库(db)的使用+本地数据库内容查看方式

最近在项目中用到了数据库的操作,项目完成后,在此记录一下使用xUtils框架数据库类的使用 1.添加依赖: implementation 'org.xutils:xutils:3.3.40' 2.在全局变量中注册xUtils,并且获取数据库的管理器,通过此管理器对数据库进行增删改查(要注意的是全局变量需要在AndroidManifest中去添加属性) 全局变量设置方法超链接 public cla...

weixin_44059750的博客 2996

Xutils

Xutils框架说明: xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展: 稳定的基石: AbsTask和统一的回调接口Callback, 任何异常, 即使你的回调方法实现有异常都会进入onError, 任何情况下onFinished总会让你知道任务结束了. 基于高效稳定的orm工具, http模块得以更方便的实现...

MX_XXS的博客 326

Android框架之XUtils框架

Android框架有很多,但是比较实用的框架莫过于XUtils了,因此,想和大家一起研究研究XUtils框架 XUtils如今有两个版本,分别是XUtils,和XUtils3,那么我们先来讲XUtils XUtils的优点:xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受

Perpetual1006的博客 745

XUtils3环境搭建与配置全指南

XUtils3是Android开发中广泛使用的工具库,集成了网络请求、图片加载、数据库操作等核心功能。其基于模块化设计原理,通过封装底层技术细节,为开发者提供简洁高效的API接口。在工程实践中,XUtils3能显著提升开发效率,特别适合快速迭代的移动应用项目。本文以Gradle依赖管理和源码集成为切入点,详解环境搭建的正确姿势,包括JDK版本适配、Gradle配置等关键技术要点,并针对网络请求优化和图片加载等高频场景给出最佳实践方案。

weixin_33985679的博客 371

xutils断点续传_Xutils3.3.26 使用详解和个人笔记

先从下图中大致了解下Xutils主要的一些功能:(图片来自互联网)查看图片随后在看看在Android Studio中的配置吧:(图片依然来自互联网)查看图片现在才开始正文能 别急做事一定要有条理,所以 我们就一条一条来萝莉查看图片(罗列);数据库模块:创建数据库:DbManager.DaoCinfig daoConfig=newDbManager.DaoCinfig().setDbName(st...

weixin_35395422的博客 240
下一篇: 获取屏幕的宽高
ddmt6831
博客等级 码龄10年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值