自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xuzhb

分享,让编程更加有趣!

  • 博客(31)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android页面解析

不知道大家在开发的时候,会不会经常碰到这样的情况,当你接手一个新项目的时候,如果某个页面出现bug,或是需要知道当前页面的类名,有时候不知道怎么下手,可能会先看代码,找到主Activity,再一步一步的定位到当前页面的类名,但是这样子效率太低。又或者通过在cmd中执行以下命令来获取当前页面所属的Activity:adb shell dumpsys activity|findstr ResumedActivity这样子确实直观了不少,但是我们知道有的Activity里面会有很多Fragment,那有

2022-04-28 17:28:16 1452

原创 ViewPager+Fragment实现懒加载

Fragment懒加载,就是在Fragment可见的时候才加载数据,而不是在创建时加载数据,假设一个页面有多个Fragment,如果每个Fragment都在创建后发送网络请求加载数据,那势必会增加一些不必要的流量消耗。使用懒加载的好处就是节省流量,使用也更加合理。实现懒加载其实很简单,在使用FragmentPagerAdapter或FragmentStatePagerAdapter时使用BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT标识,之后Fragment在可见时都会调用o

2022-04-25 22:55:06 2402 1

原创 Android夜间模式的简单实现

Android 6.0以后系统提供了AppCompatDelegate用来实现夜间模式和日间模式的切换,AppCompatDelegate中存在以下几种模式:AppCompatDelegate.MODE_NIGHT_YES:设置夜间模式AppCompatDelegate.MODE_NIGHT_NO:设置日间模式AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM:跟随系统设置决定是否设置夜间模式AppCompatDelegate.MODE_NIGHT_AUTO

2021-11-19 09:32:14 5830 1

原创 Retrofit配合RxJava实现网络请求

前言Retrofit是目前使用非常广泛的网络请求框架,它基于OkHttp实现,通过注解配置需求,使用简单方便,而且提供了RxJava支持,本篇文章将介绍Retrofit的一些简单用法,以及和RxJava配合使用来实现网络请求的过程。导入依赖//Retrofitimplementation 'com.squareup.retrofit2:retrofit:2.9.0'implementation 'com.squareup.retrofit2:converter-gson:2.9.0'im

2021-11-13 22:57:45 2692

原创 Android实现加载状态控件LoadingLayout

通常我们浏览新闻APP的时候,会有一个表示加载状态的控件,表示当前正在加载数据或是网络断开导致加载出错了,数据为空等,就比如下面的今日头条:在这篇文章中,我将实现一个加载状态控件LoadingLayout。首先,要明确一下这个加载控件会有几种状态,第一肯定是先要有一个正在加载的状态,加载中的状态可以用一个gif动图或是动画来实现;当加载完成请求到数据后又可以分为两种状态,有数据和无数据,有数据自然是要隐藏整个加载控件,无数据时要有一个表示无数据的状态,这就有三种状态了;但是还要考虑到数据加载出错

2021-08-28 17:21:30 1161

原创 Android仿iOS菊花加载框

实现一个类似iOS的菊花加载框,效果如下:话不多说,直接上代码。首先绘制菊花部分:class LoadingView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) { companion object { privat

2021-08-26 23:02:02 819 1

原创 Kotlin自定义圆形进度条

实现一个圆形进度条,效果如下: 自定义布局属性:<!--圆形进度条--><declare-styleable name="CircleProgressBar"> <attr name="max" format="integer" /> <attr name="progress" format="in...

2020-04-25 20:09:41 1087

原创 Android绘制双折线图

自定义View实现双折线图,可点击,点击后带标签描述,暂未实现拖动的功能,实现效果如下: 代码如下: 首先,自定义布局属性:<declare-styleable name="LineChart"> <!--type2.LineChart(双折线图)--> <attr name="ma...

2020-04-25 18:11:04 1167

原创 Android集成zxing扫码框架

我们知道zxing是一个强大的处理二维码和条形码等的开源库,本篇文章记录一下自己在项目中集成zxing开源库的过程。导入依赖implementation 'com.google.zxing:core:3.3.3'申请权限 在AndroidManifest中申请相应权限:<!--相机--><uses-permission andr...

2020-04-25 15:48:31 853

原创 正则表达式整理

正则表达式相关语法特殊字符:^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结尾位置,举个例子:"^-?\\d+$"匹配整数"1",如果不带$,那么"^-?\\d+"不仅匹配整数"1",也匹配"1asdd"这种格式 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次,也就是说至少匹配一次 ? 匹配前面的子表达式零次或一次 ...

2020-04-17 23:41:05 256

原创 Android实现一个通用的PopupWindow

首先说一下自己想要的目的,实现一个PopupWindow类,能够简化PopupWindow的封装过程,匹配各种各样的弹窗布局,不需要每次先通过LayoutInflater.from(context).inflate获取View,再通过setContentView设置弹窗布局,重复地去...

2020-02-16 00:15:36 361

原创 Android自定义View(五)Canvas的常用方法

如果说Paint是Android中的画笔,那么Canvas相当于Android中的画布,Canvas的主要功能包括如下:方法 方法说明 drawPoint(x, y, paint) 绘制点 drawLine(startX, startY, stopX, stopY, paint) 绘制直线 drawLines(pts, paint) 绘制多条直线 ...

2019-06-23 14:14:28 146

原创 Android自定义View(四)Paint的常用方法

Paint相当于Android中的画笔,Paint的主要功能包括如下:方法 方法说明 setAntiAlias(boolean aa) 设置画笔的锯齿效果 setColor(int color) 设置画笔的颜色 setARGB(int a, int r, int g, int b) 设置画笔的A、R、G、B值 setAlpha(int a) ...

2019-05-15 21:58:23 216

原创 Android自定义View(三)自定义属性AttributeSet

自定义View的时候通常需要提供一些自定义属性,自定义属性非常简单,只需要在res资源目录的values目录下创建一个attrs.xml的属性定义文件,然后在该文件中定义相应的属性,并在自定义View的构造函数中获取并设置自定义属性的默认值即可。 假设在attrs.xml中自定义如下属性: <declare-styleable name="Custo...

2019-04-20 20:40:58 4535 2

原创 Android自定义View(二)屏幕尺寸信息和单位转换

相关术语:屏幕大小:通常描述手机大小会用几寸来描述,如6.5寸手机,这里的屏幕大小实际指的是屏幕对角线的长度;分辨率:手机屏幕的像素点个数,如手机屏幕分辨率为1920x1080指的是宽有1080个像素点,高有1920个像素点;DPI:每英寸像素,由对角线的像素点个数除以屏幕大小(对角线长度)得到;px:像素,1px代表屏幕上一个物理的像素点,可以理解为绝对尺寸,在某个屏幕分辨率上显...

2019-03-20 22:56:33 1023

原创 Android自定义View概述

自定义View是Android开发中不可避开的一个重点,也是难点。一方面自定义View涉及到的的知识点较多,从基础的坐标、Paint和Canvas的使用到Drawable、动画,更复杂的可能还会涉及Shader以及混合模式Xfermode等等(当然可能不止如此);另一方面自定义View的过程比较复杂,要了解View的测量、布局、绘制流程,重写相应的方法。自己一直有个想法,想把自己在学...

2019-03-17 23:04:14 193

原创 Android TextView实现下划线的几种方式

       分享一下Android中实现下划线的几种方式:       一、通过TextView中的setFlags方法设置成Paint.UNDERLINE_TEXT_FLAG。tv=(TextView)findViewById(R.id.tv);tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);       实现效果如下: ...

2018-11-28 22:14:10 36381 2

原创 Android Studio 3.x.x降低compileSdkVersion的SDK版本

        自从Android Studio升级到3.0以上版本,新建项目的默认compileSdkVersion已经不低于26,如Android Studio 3.1.3新建项目后项目默认的compileSdkVersion为26,而Android Studio 3.2.1新建项目后项目默认的compileSdkVersion为27,但是有时候并不需要设置到这么高的版本,这里介绍一下如何在A...

2018-11-20 23:11:24 6324 2

原创 Android反射调用goToSleep

goToSleep的函数原型为 public void goToSleep(long time)public void goToSleep(Context context) { PowerManager powerManager= (PowerManager) context.getSystemService(Context.POWER_SERVICE); t...

2018-11-12 22:32:41 1461

原创 Binder连接池的原理及使用方法

       在这篇博客中将重点介绍一下Binder连接池的使用方法。       首先,说明一下Binder连接池出现的原因以及使用目的。为什么会有Binder连接池这个概念,这需要从AIDL说起,正常来说,服务端新建一个AIDL接口后,都会同时创建一个Service,这个Service对象用于返回AIDL接口的底层调用对象Binder给客户端,试想一下,如果有10个不同的AIDL接口,那是...

2018-11-12 22:30:31 647

原创 Android判断Wifi高级设置是静态IP配置方式还是DHCP配置方式

         Android如何判断Wifi高级设置是静态IP配置方式还是DHCP配置方式,偶然间发现一个小窍门,我们获取当前无线网络的DhcpInfo对象,可以观察这个对象在DHCP配置和静态IP配置方式下的输出信息,即调用DhcpInfo.toString()方法输出到控制台,其中DHCP配置方式下的输出信息为: ipaddr 192.168.0.107 gateway 192.168....

2018-11-11 23:06:25 3557

原创 Android apk反编译

       Android用于Apk反编译的工具主要有三个,分别为apktool、Dex2jar和jd-gui,它们分别负责反编译的不同部分,下面讲解一下它们的使用方法和用途。1、apktool      下载apktool完成后,解压并进入它所在的文件夹目录,可以看到它的目录大概如下:        将要反编译的apk,假设为test.apk,复制到该目录中,执行反编译命...

2018-11-11 23:03:15 135

原创 Android机顶盒获取网络带宽

        Android盒子网络带宽分为2种情况,一种是以太网络,一种是无线网络。获取无线网络带宽比较简单,只要通过wifiInfo.getLinkSpeed()就可以获取得到,单位是”Mbps",即wifiInfo.LINK_SPEED_UNITS。获取以太网的带宽即获取以太网卡的带宽可以通过执行shell命令"cat /sys/class/net/eth0/speed"来获取。 ...

2018-11-11 22:24:12 1592 3

原创 Android机顶盒判断网线拔插状态

​//在java代码中执行adb命令 public String execCommand(String command) { Runtime runtime; Process proc = null; StringBuffer stringBuffer = null; try { runtime =...

2018-11-11 22:16:18 1800

原创 Android实现跳转到第三方应用的某个Activity界面

这里首先说明一下Intent的setClass和setClassName的区别setClass:跳转到与该工程下的(同一个Application中的)activity或者servicesetClassName:跳转到不同Applicaiton的activity或者service摘自慕课网因此如果要在自己的应用中实现打开第三方应用的某个Activity界面,可以使用下面的方法Inten...

2018-11-11 22:13:26 4661

原创 Android启动第三方应用

在自己的应用中启动第三方应用其实非常简单,只需要2行代码就够了,当然前提是2个应用安装在同一设备中。Intent intent=getPackageManager().getLaunchIntentForPackage("第三方应用包名");startActivity(intent); ...

2018-11-11 22:09:25 291

原创 Android自定义复合控件

       在Android中,复合控件是非常常见的,下面以创建一个标题栏为例,讲解创建自定义复合控件的过程。       以下图为例:我们要创建一个标题栏,这个标题栏是由左边的Button、右边的Button以及中间的TextView复合而成的,而我们希望能够直接在这个自定义标题栏设置里面的Button和TextView的属性信息。       具体实现过程如下:1、首先在re...

2018-11-11 19:10:52 640

原创 Android在代码中执行root命令

​public void runRootCommand(String command) { Process process = null; DataOutputStream dataOutputStream = null; DataInputStream dataInputStream = null; StringBuffer ...

2018-11-11 18:21:40 3816

原创 Android实时监听并回应

问题描述:实现每几秒实时循环监听一个接口的返回值,当监听到特定值时执行相应操作这里写了一个例子,实现了每2秒监听网络状态,如果监听到网络不可用,就在前台提示,使用了接口回调的方法。解决方案:​public class NetStateListener { public interface OnNetStateListener{//接口 void netMMon...

2018-11-11 18:12:26 1854

原创 Android自定义View(一)坐标系解读

首先,先认识一下Android的坐标系统,自定义View的时候需要非常清楚坐标系的正负方向,要知道Android系统中的坐标方向和数学中的坐标系方向是不一样的,Android中的屏幕坐标系如下图所示: Android的屏幕坐标系以屏幕左上角为原地(0,0),X轴和Y轴的正方向分别为向右和向下。 这里也说明一下getX/getY和getRawX/get...

2018-10-18 22:08:41 658

原创 HttpURLConnection类保持session会话

问题描述:   有2个URL连接,需要在第一个URL保持在线的状态下,发送第二个URL数据请求才能获取到数据解决方案:public void requestUrl(String url1, String url2) { HttpURLConnection connection = null; Reader read; BufferedR...

2018-09-16 10:50:49 2489 1

ViewPager+Fragment实现懒加载

ViewPager+Fragment实现懒加载

2022-04-25

NightModeDemo.rar

实现夜间模式

2021-11-19

HttpDemo.rar

Retrofit配合RxJava实现网络请求

2021-11-13

Android实现加载状态控件LoadingLayout

Android实现加载状态控件LoadingLayout

2021-08-28

Android仿iOS菊花加载框

Android仿iOS菊花加载框

2021-08-28

Binder连接池的使用方法

使用Binder连接池的超简单例子,通过这个例子,读者可以体会binder连接池的使用要领

2018-11-12

apk反编译工具

Apk反编译工具包括了apktool、dex2jar和jd-gui三个工具,apktool用于apk反编译获取资源文件等,dex2jar用于分析classes.dex文件,jd-gui可以用于打开dex2jar分析生成的classes-dex2jar.jar文件从而查看源代码。

2018-11-11

空空如也

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

TA关注的人

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