自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(191)
  • 资源 (2)
  • 收藏
  • 关注

原创 Gson 字符串常用转换方式(集合转换为Json数组

【代码】Gson 字符串常用转换方式(集合转换为Json数组。

2023-10-25 23:56:47 1336

原创 常见的空指针异常

开发中注意一些实体类转换时,相互赋值很可能将 null 转换为了字符串,比如以下代码,就把 null 转换为了 null 字符串,后面闪退也比较难排查。

2023-10-25 23:49:06 89

原创 时间戳的常用转换(时间戳转换为年月日)

【代码】时间戳的常用转换(时间戳转换为年月日)

2023-10-25 23:44:00 580

原创 文件的常用操作(读取压缩文件、解压、删除)

文件的常用操作(读取压缩文件、解压、删除)

2023-10-25 23:41:57 188

原创 Kotlin 替换非空断言的几种方式

Kotlin

2023-02-10 17:13:20 2123

原创 实时显示网速

// 获取网速object XENetSpeedMonitor { private var lastFlowTotal = 0L fun getNetSpeed():String? { // wifi & mobile 总接收流量字节 val rxTotal = TrafficStats.getTotalRxBytes() // wifi & mobile 总发送流量字节 val txTotal = Tra

2021-12-15 23:51:39 593

转载 Kotlin 类对象、内部类对象、Object类对象、伴生对象的区别

转载:https://www.jianshu.com/p/3bd582305f3c

2021-11-25 08:44:19 227

原创 window BAT 命令 批量修改部分文件名称

@echo offset /p str1= 请输入要替换的文件(文件夹)名字符串(可替换空格):set /p str2= 请输入替换后的文件(文件夹)名字符串(去除则直接回车):echo.echo 正在修改文件(夹)名中,请稍候……for /f “delims=” %%a in (‘dir /s /b ^|sort /+65535’) do (if “%%~nxa” neq “%~nx0” (set “file=%%a”set “name=%%~na”set “extension=%%~x

2021-11-23 16:28:19 2693

原创 Git手册

第二章:基础打标签列出标签:git tag (可加上 -l / -list 或者不加 都行)列出指定范围标签git tag -l " < tagName > * "注意指定版本" < tagName >* " 加 ✳️注意 tagName 需要双引号创建标签1⃣️ 创建附注标签git tag -a < tagName > -m “comment message”-a 指定 tag 名称-m 添加评论1⃣️.1⃣️ 查看标签提交信息

2021-11-02 00:47:52 131

原创 Android 拍照并保存到相册

package com.example.takephoto;import android.content.ContentUris;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.n

2021-07-12 15:47:36 1815

原创 Webview获取js内容

1:将 webview的Setting中,设置javaScriptEnabled = truewebView.settings.javaScriptEnabled = truewebView.settings.allowFileAccess = true2:设置 addJavascriptInterfaceval javaScriptParse = InJavaScriptLocalObj()webView.addJavascriptInterface(javaScriptParse, "jav

2021-06-28 15:32:49 488

原创 Git 项目拉取及配置

Git 分区:工作区( Workspace)、暂存区(Staged)、版本库(Respository)一. 创建仓库并拉取代码初始化 Git 仓库$ git init [project-name]二. 配置$ git config --global user.name “$user.name”$ git config --global user.email “$user.email”$ ssh-keygen -t rsa 生成密钥 一路回车$ cat ~/.ssh/id_rsa.pub |

2021-04-15 19:56:17 209

原创 机顶盒焦点控制

常见默认获取焦点的组件:EditText、Scrollbar常见不会默认获取焦点的组件:FrameLayout、LinearLayout、ImageView、Button、TextView将组件设置clickable = true,则相当于将组件设置为focusable = true焦点的时间分发机制:焦点的事件分发机制避免焦点丢失(设置焦点不跑出子View中):大体思路,通过当前已经获取焦点的view ,以及按键的方向,去寻找下一个可以获取焦点的view,代码展示:FocusFinder.getI

2021-04-14 23:12:27 207

原创 Android 焦点时间分发与传递机制

学习参考:Android焦点事件分发与传递机制Android 焦点分发的主要方法以及拦截方法的讲解:首先:在RootViewImpl中的函数通道是各种策略(InputStage)的组合,各个策略的任务不同,如:SyntheticInputStage、ViewPostImeInputStage、NativePostImeInputStage等等,这些策略以链表结构构造起来,当一个策略者没有消费事...

2021-04-14 22:23:11 242

原创 Kotlin 集合类的高阶函数

集合类:用于存放对象的引用,而非对象本身。数据结构主要解决三个问题:数据元素之间的逻辑关系:集合、线性结构、树形结构、图形结构等数据的物理结构:顺序、链表、索引、散列表、等形式数据的处理运算集合类主要分为:可变集合类(Mutable)和 不可变集合类(Immutable)集合类型主要有3种:list(列表)、set(集)和 map(映射)1.列表:主要特征其对象以线性方式存储,没有特定顺序,主要包括数组、向量、链表、堆栈、队列等。2.集:主要特征存储不重复的对象3.映射:主要特征其对象

2021-03-21 15:08:00 760

原创 View 的事件分发机制

定义:事件分发,以点击事件为例,即当一个MotionEvent产生,到系统将这个事件传递给一个具体的 View 的过程,就是分发的过程。主要包括三个重要的方法:dispatchTouchEvent、onInterceptTouch、onTouchEventfun dispatchTouchEvent(ev: MotionEvent?):Boolean:用来进行事件分发,如果事件能够传递给当前 View ,那么该方法一定会被调用,返回结果受当前 View 的onTouchEvent 和下级 View的.

2021-03-15 00:32:10 142 1

原创 类之间的几种关系

继承关系实现关系依赖关系关联关系聚合关系组合关系

2021-02-15 18:28:10 224

原创 Android 开发两年面试总结

面试时间:2020.11.19-2020.11.25面试公司:6家旺龙智能、小虎互联、尚游、小鹅通、编程猫、车保中服、旺龙智能骑驴找马面试:2020.09.06-2020.11.13到面:几米、来画、尚米、伊欧乐、ETEKCITY、木易炎黄、咸鱼游戏、私募排排、威富通、东风日产、创维、TCL电面:百度、阿里、腾讯、网易沟通软件:Boss直聘面试方向:项目、java基础、android基础、网络项目:简历按时间顺序,从最新-最久,写清并说清自己负责的内容,细化到如何实现的,将整个流程烂熟在脑

2020-12-01 13:20:26 1460 1

原创 Android收集日志文件

package example.com.baseknowledge.IO;import android.os.Environment;import android.os.Process;import android.os.SystemClock;import android.text.TextUtils;import android.util.Base64;import android.util.Log;import java.io.BufferedInputStream;import

2020-09-02 10:47:54 557

原创 算法学习知识图谱

2020-08-22 07:51:43 225

原创 platform-tools\adb.exe,start-server‘ failed -- run manually if necessary,adb启动失败,端口被占用

第一步:netstat -aon|findstr “5037”第二步:tasklist|findstr “17648” 找到listening 的端口程序第三步:taskkill /pid 17648 -t -f 结束进程第四步:adb start-server重启服务。

2020-08-17 10:22:43 770

原创 RecyclerView之选择条目状态的改变

两种方式:方式一:针对简单数据类型,且数据量较少的RecyclerView缺点:全局刷新RecyclerView,所以数据量较少可以使用。在该Adapter中,使用下标法:xxxActivity/xxxFragment xxxAdapter.setOnItemClickListener(new BaseAdapter.OnRecyclerViewItemClickListener() { @Override public void o

2020-08-14 07:57:03 932

原创 RecyclerView之画廊实现

private static final float MIN_SCALE = 0.95f; private static final float MAX_SCALE = 1.15f; int mScreenWidth = getResources().getDisplayMetrics().widthPixels; mSeriesRl.addOnScrollListener(new RecyclerView.OnScrollListener() { ...

2020-08-14 07:56:42 463

原创 TextView之折叠显示

①监听TextView的绘制,当其未超过显示最大行数时,将其底部drawable动态设置为null。②监听TextView的绘制超过显示最大行数时,记录最大行数的最后一个字的位置mLastEnd。③监听TextView的点击事件,通过底部是否为null,为null,则没有折叠,不用进行其他操作。不为null,则有折叠操作,v.setSelected(!v.isSelected());,折叠,则展开,显示全文,未折叠,则折叠,显示从0到mLastEnd-1的字符串IntroduceTv布局 ..

2020-08-14 07:56:21 302

原创 TextView之绘制append文字

引入第三方TextDrawable:implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'主要使用TextView 中的ImageSpan → ImageSpan需要用到Drawable,则用到了TextDrawable。详细使用可见其github.https://github.com/amulyakhare/TextDrawable private void appendLanguage(String langua.

2020-08-14 07:55:53 521

原创 RecyclerView之单个条目请求数据

当一个item条目需要进行二次请求时,需要注意的是,当前用户滑动后,所停留的item,是否时刚刚请求数据回来的item如果不是,不能将之前的item请求的数据,放到该item上,所以,需要在holder赋值前,比较holer是否是请求数据的holer。具体实现: defHolder.categoryId = mCategoryList.get(position).getId(); final List<ChannelVodBean> channelList = m

2020-08-14 07:55:20 380

原创 RecyclerView之实现添加轮播图

实现方式:将item 0返回轮播图即可。第三方框架:Banner implementation 'com.youth.banner:banner:2.1.0'Banner的详细使用:①:VodBannerAdapter:注意:onCreateHolder是,布局需要设置为match_parent,这个是viewpager2强制要求的itemView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PAR

2020-08-14 07:54:58 681

原创 基础框架之LocalCache

import android.util.Base64;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.security.MessageDigest;import java.ut

2020-08-14 07:54:49 418

原创 基础框架之LruDiskCache

import android.util.Base64;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.security.MessageDigest;import java.u.

2020-08-14 07:54:39 261

原创 基础框架之ILoadDataView

public interface ILoadDataView<T> extends IBaseView { /** * 加载数据 * * @param data */ void loadData(T data); /** * 加载更多数据 * 判断 data 是否为空或数量为0 * 来进行 adapter.loadNoMore OR adapter.loadMore * * @

2020-08-13 17:49:13 97

原创 基础框架之IBaseView

public interface IBaseView { /** * 显示一上来的加载动画 */ void showLoading(); void showLoading(int loadingIv); /** * 隐藏一上来的加载动画 */ void hideLoading(); /** *显示网络错误 * @param msg */ void showNetError(

2020-08-13 17:48:36 340

原创 基础框架之IBasePresenter

public interface IBasePresenter { /** * 获取数据,更新界面 */ /** * 获取网络数据,更新界面 */ void getData(); /** * 加载更多数据 */ void getMoreData();}

2020-08-13 17:47:56 157

原创 基础框架之BaseActivity

import android.content.Intent;import android.os.Build;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.MenuItem;import android.view.WindowManager;import com.trello.rxlifecycle2.LifecycleTransformer;..

2020-08-13 17:46:34 413

原创 基础框架之BaseViewHolder

import androidx.recyclerview.widget.RecyclerView;import android.view.View;public abstract class BaseViewHolder<T> extends RecyclerView.ViewHolder { public T itemData; public BaseViewHolder(View itemView) { super(itemView); .

2020-08-13 17:44:10 2748

原创 基础框架之BaseLoadMoreHolder

import android.view.View;public abstract class BaseLoadMoreHolder{ private final IGetMoreDataPresenter presenter; public View itemView; public BaseLoadMoreHolder(View itemView, IGetMoreDataPresenter presenter) { this.itemView = itemVi

2020-08-13 17:43:16 226

原创 基础框架之BaseLoadingHolder

import android.view.View;public abstract class BaseLoadingHolder{ private final IGetDataPresenter presenter; public View itemView; public BaseLoadingHolder(View itemView, IGetDataPresenter presenter) { this.itemView = itemView; .

2020-08-13 17:41:10 188

原创 基础框架之BaseGridAdapter

import android.content.Context;import androidx.recyclerview.widget.GridLayoutManager;public abstract class BaseGridAdapter<T> extends BaseAdapter<T> { private GridLayoutManager mGridLayoutManager; private int mSpanCount; publ.

2020-08-13 17:39:52 183

原创 基础框架之BaseAdapter

import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.List;import androidx.recyclerview.widget.RecyclerView;import iptv.com.quick.utils.Logger;public abstract class BaseAdapter<T> extends Recyc..

2020-08-13 17:38:10 320

原创 基础框架之BaseFragment

package iptv.com.quick.module.base;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.tr

2020-08-13 17:35:49 1197 1

原创 剑指offer_面试4【替换空格】【字符串】

题目:请实现将一个函数,把字符串中的每个空格替换成"%20"。例如,输入"we are happy",则输出"we%20are%20happy"public class 字符串 { public String replaceString(String str) { if (str == null || str.equals("")) { return str; } char[] chars = str.toCharArr.

2020-08-07 00:17:31 88

基于UDP的Socket通信,有客户端与服务端

该程序基于Socket的UDP通信,实现双端通信,可以用于两个手机端在同一个局域网内进行通信,有问题请尽管留言,也希望大家可以指出不足之处~

2018-08-03

基于UDP的socket的客户端与服务端

该程序基于Socket的UDP的通信方式,实现了双端进行通信,可以用于两个手机端在同一个局域网内进行通信。

2018-08-03

空空如也

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

TA关注的人

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