自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Android 如何搭载一个合理的MVVM框架?

什么是VM,ViewModel(视图模型):负责将模型中的数据转换为视图可以直接使用的形式,并监听视图的变化来更新模型的数据,简单来说,就是数据的来源,持有所有供展示的数据。显然,是viewModel,通过数据绑定的方式,只改变数据,不改变model的方式,让逻辑代码变得清晰,优雅,解耦代码,显著提高代码的可读性和可维护性和可拓展性。什么是V,View(视图):负责展示数据给用户,并处理用户的输入,简单来说,就是直面展示的UI,组件。

2025-01-06 17:26:35 366

原创 解决:Retrofit请求返回: Expected a string but was BEGIN_OBJECT at line 1 column 4832 path $

最近在尝试使用玩Android开放平台的api做一个玩Android app,在我请求首页文章列表时卡住了两天,当我使用ResponseBody作为请求体的时候,正常返回数据,可当我使用javabean对象作为请求体的时候,直接就给我返回了 onFailure,就让我很疑惑。困扰我许久 java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 4832 path $.data.dat

2021-08-02 11:37:10 3010

原创 Kotlin—数据容器之集合

说明:各种集合对于解决问题都具有重要意义,并且经常用到。与数组不同的是可变集合的大小可以动态改变List:是一个有序集合,可通过索引(下标)访问元素。元素可以在list中多次出现丶元素可重复Set:是唯一元素集合。一组无重复的对象。一般来说set中元素的顺序并不重要丶无序集合Map:(字典)是一组键值对。键是唯一的,每个键都刚好映射到一个值,值可以重复集合创建的技巧集合可分为可变集合,显而易见,是指集合创建完成之后,可以对集合进行增删查改操作不可变集合,显而易见,是指集合创建完成

2021-07-25 11:30:57 439 2

原创 Kotlin—数据容器之数组

kotlin数组数组是一种初始化时指定容器大小,不可以动态调整其大小的容器。元素按顺序存储在一串连续的内存段上。Kotlin数组创建技巧1.使用arrayOf创建数组,必须指定数组的元素,可以是任意类型 //1.使用arrayOf创建数组,必须指定数组的元素,可以是任意类型 val arrayNumber= arrayOf(1,2,3,4) //集合中的元素可以是任意类型 //kotlin中的Any等价于Java中的Object 对象的意思 val

2021-07-24 13:30:48 1228 1

原创 Kotlin—基本数据类型

Kotlin的基本数据类型包括:Byte丶Short丶int丶Long丶Float丶Doubel所有未超出int最大值的整型值初始化的变量都默认为int类型,如果初始值超过了其最大值,那么推断为Long类型。在数字后面显式添加一个L表示这是一个Long类型 //编辑器会根据复制100,推断number的数据类型为int val number=100 //虽然没有明确赋值,但是编译器发现8000000000超过int最大值,所以升级为Long val bigNumber=80

2021-07-23 11:13:58 845 1

原创 初识—Kotlin

kotlin是什么?kotlin是一门用于现代多平台应用的静态编程语言,其中被广泛用于Android平台的开发,被称为Android世界的Swift。由JetBrains公司设计并开源,从16年发布1.0版本至今,使用的开发者数量快速增长。为什么要优先使用Kotlin进行Android开发?在2019的Google I/O大会上,Google宣布今后将优先采用Kotlin进行Android开发。Kotlin是一种新型的静态类型编程语言,不仅可以减少常见代码的错误,还可以轻松集成到现有应用中。

2021-07-23 10:59:14 331 1

原创 Android Retrofit嵌套请求-RxJava 3

说明:在实际开发中,可能会存在需要先请求A接口,再去请求B接口的情况。比如需要请求获取收藏文章列表,但是需要先登录拿到Cookie才能请求收藏文章列表接口,此时请求就有了先后顺序,使用RxJava 3进行嵌套请求注:本文使用wanandroid API开放平台https://www.wanandroid.com/blog/show/2里面的接口。添加RxJava 3和Rxandroid依赖implementation "com.squareup.retrofit2:adapter-rxj.

2021-07-21 10:55:10 863 1

原创 Android Retrofit的转换器

说明:在我们接到服务器响应后,目前无论是okHttp还是Retrofit都只能接收到String字符串类型的数据,在实际开发中,我们经常需要对字符串进行解析将其转变为一个Java Bean对象。比如服务器响应数据为JSON格式字符串,那么我们可以自己利用GSON库完成反序列化的操作。而Retrofit提供了多个转换器使得响应能够完成自动的数据转换。下文以json解析为例。注:本次使用的接口为wanandroid的登录接口进入wanandroid API开放平台https://www.wanandr.

2021-07-20 10:10:07 709 1

原创 Android Retrofit的基本使用

效果图

2021-07-19 10:45:22 275

原创 Android okHttp-Post的提交数据方式

说明:学习记录HTTP content-type 对照表:https://www.runoob.com/http/http-content-type.htmlpost上传多个文件 //post上传多个文件 @Test public void uploadFileUnitTest() throws IOException { OkHttpClient okHttpClient = new OkHttpClient(); File file1

2021-07-17 10:19:07 514

原创 Android okhttp的同步与异步请求

说明:对okhttp简单使用布局文件activity.mian.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.andro

2021-07-16 11:24:06 375

原创 Android Generaed API的使用(Glide更简单的用法)

上文说了Glide的用法,这篇文章就教大家如何更简单得使用Glide,所以我们这里用到了Generaed API首先还是导入依赖 //Glide implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'新建一个java类,只需继承自AppGlideModule和添加@GlideModule标注

2021-07-15 13:40:06 227

原创 Android Glide图片框架的使用

基本使用添加Glide依赖 //Glide implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'注册权限(网络权限和访问SD卡的权限) <uses-permission android:name="android.permission.INTERNET"/>

2021-07-15 11:47:48 794

原创 Android 集成高德地图SDK

今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能=-=第一步:引入高德地图的SDK。首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新建一个应用点击添加,添加keykey名称自己命名PackageName填写的是你项目的包名,在工程的bulid.gradle下的defaultConfig defaultConfig { applicationId "com.cdw.study8"

2021-07-14 17:59:14 2021 1

原创 Android ViewPager与Fragment联动(2)

新增底部导航栏的联动在drawable包下新建四个drawable resource file ,我这里分别是这些底部导航栏图片样式里面的代码第一行item是点击时更换的图片,有第二行是正常状态时的图片,我们底部导航栏是四个控件,那四个控件的四个文件都是这样设置,下面只放一个<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/r

2021-07-13 09:21:47 573 1

原创 Android ViewPager与Fragment联动(1)

由于我们使用的是ViewPager2,所以首先,我们引入ViewPager2依赖 implementation "androidx.viewpager2:viewpager2:1.0.0"布局文件很简单<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://s

2021-07-12 10:39:54 396 1

原创 Android ViewPager简单使用

效果图

2021-06-09 09:00:43 644 3

原创 Android 常用的UI界面和组件综合应用

效果图

2021-06-04 11:17:41 276 1

原创 Android 五种常用dialog的使用

常规dialogxml文件 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bt1" android:text="常规对话框" android:onClick="bt1">...

2021-06-03 15:35:25 2346 2

原创 Android ProgressBar(进度条)的简单使用

圆形进度条​​​​​​​<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ProgressBar android:id="@+id/progress1" andro

2021-06-01 10:34:32 1527 1

原创 Android一键退出应用程序

思路:向集合中添加Activity 从集合中移除Activity //移除并关闭所有Activity创建一个ActivityCollector.Java(收集器类),

2021-05-31 17:49:42 549

原创 Android Intent的用法(详细)

显式Intentbutton1=findViewById(R.id.intentgo);button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,IntentAvtivity.class); startActivity(inten

2021-05-30 10:31:26 3996 11

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除