自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 仿淘宝物流信息TimeLineView

private Paint mPaint;/**首个节点的外半径*/private float timelineHeadRadius;/**首个节点的中心颜色*/private int timelineHeadColor;/**首个节点的边缘颜色*/private int timelineHeadColorEdge;/**其他节点的颜色值*/private int timelineOtherColor;/**时间线的节点数*/private int

2022-05-07 11:35:17 307

原创 Android _ 《看完不忘系列》之Glide

Glide glide = Glide.get(context);//如果空fragment没有RequestManager,就创建一个requestManager = factory.build(glide, current.getGlideLifecycle(),current.getRequestManagerTreeNode(), context);//让空fragment持有RequestManagercurrent.setRequestManager(requestManager);

2022-05-07 11:33:08 193

原创 Android Room 实现简单的增删改查(一)

@Insertvoid addUser(User user);//修改@Updatevoid updateUser(User user);//删除@Deletevoid deleteUser(User user);//获取User@Query(“SELECT * FROM user WHERE userName=:userName”)User getUser(String userName);//查询@Query(“SELECT * FROM User”)List getUsers

2022-05-07 11:23:43 791

原创 Android 智能问答机器人的实现

android:layout_toLeftOf=“@id/id_chat_send”android:background=“@drawable/login_edit_normal”android:singleLine=“true”android:textSize=“18sp” /><ListV 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 iewandroid:id=“@+id/id_chat_listVi

2022-05-06 11:41:26 887

原创 Android 拍照:如何使用已有相机应用捕获图片(Taking Photos Simply

目录需要WRITE_EXTERNAL_STORAGE权限。从Android 4.4开始,不再需要因为这个原因声明这个权限了。因为这个目录不能被其他app访问,所以你可以通过添加maxSdkVersion属性,声明只在低版本的Android设备上请求这个权限。<manifest …><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"android:maxSdkVers.

2022-05-06 11:39:39 588

原创 Android 打造任意层级树形控件 考验你的数据结构和设计

* 当前的级别*/private int level;/*** 是否展开*/private boolean isExpand = false;private int icon;/*** 下一级的子Node*/private List children = new ArrayList..

2022-05-06 11:37:40 533

原创 Android 开发的现状及发展前景

所以,工作过一、两年后你会发现,自己每天重复工作内容就是将找各种各样的组件、框架,拖拖拽拽,改改样式。在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。造成这种局面的有两种原因:1.所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。从自身规划的角度讲,技术上的进阶分如下几个阶段:1.做好业务需求的功能。这个是初级程序员就应该有的能力。.

2022-05-06 11:35:25 403

原创 Android 屏幕适配的最优方案(一)

(3)屏幕的像素密度(4)屏幕尺寸、分辨率、像素密度三者关系3.密度无关像素(1)dp与px的转换(2)独立比例像素4.解决方案(1)使用备用布局 -使用限定符(2)使用最小宽度限定符(3)使用可用宽度限定符(4)添加屏幕方向限定符(5)使用 Fragment 将界面组件模块化(6)使用旧尺寸限定符支持 Android 3.1(7)使用布局别名[](()1.为什么要屏幕适配=====================..

2022-05-06 11:33:39 745

原创 Android 安卓动画 补间动画 - 平移动画

找到anim点击OK,此时就创建好了在这个文件夹(anim)下新建xml文件,右击anim文件夹按下图操作创建在这个xml文件中写入属性,属性详细见下列表格解释:<?xml version="1.0" encoding="utf-8"?><translate xmlns:android=“http://schemas.android.com/apk/res/android”android:duration=“2000”android:fillAfter=“false”an

2022-05-06 11:31:39 1373

原创 Android 天气APP(十)继续优化

android:layout_width=“match_parent”android:layout_height=“wrap_content”/><androidx.core.widget.NestedScrollViewandroid:overScrollMode=“never”android:layout_width=“match_parent”android:layout_height=“match_parent”></androidx.core.widget.N

2022-05-06 11:29:46 126

原创 Android 增量更新完全解析 是增量不是热修复

${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin.ifndef WITHOUT_MAN${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1.endif然后,重新执行make:aaa:bsdiff-4.3 zhy$ makecc -O3 -lbz2 bsdiff.c -o bsdiffcc -O3 -lbz2 bspatch.c -o bspatchbspatch.c:39:2

2022-05-06 11:27:43 186

原创 android 图表基本属性方法设置

// //renderer.set// barChart.addView(mChartView, new LayoutParams(// LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));// } else// mChartView.repaint();}/**@param colors@return*/

2022-05-06 11:26:00 423

原创 Android 可能你想要的APK瘦身笔记

但是对于出海应用APP,非洲,印度那些网络资源匮乏的地方,APP包体积还是特别敏感的日活,流量比较大的APP,如微信,抖音等APP,对包体积还是比较关注的所以今天还是把我之前对APP瘦身的笔记分享给大家,与此共勉(内容不包含插件化,Split APK等动态下发技术,Only客户端自己的优化)APK包结构简介APK包结构主要包含[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nvuZr0E-1651807434688)(https://user-gold-cdn

2022-05-06 11:24:13 132

原创 Android中实现定时器的3种解决方法

Message message = new Message();message.what = 1;handler.sendMessage(message);// 发送消息} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStac..

2022-05-05 13:40:16 1039

原创 Android~自定义View和事件分发

boolean 表示布尔值integer 表示整型值float 表示浮点值fraction 表示百分数enum 表示枚举值flag 表示位运算–>attrs.xml文件declare-styleable标签定义及相关属性在布局文件中导入自定义的属性集。两种方法xmlns:custom=“http://schemas.android.com/apk/res/com.example”xmlns:custom=“http://schemas.

2022-05-05 13:36:26 96

原创 Android-音视频学习系列-(二)-交叉编译动态库、静态库的入门学习

如果出现如下字样,就证明配置成功了。交叉编译在 Linux 上的环境变量配置(做一个参考,采坑之后的环境配置):export NDK_GCC_x86=“/root/android/ndk/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc”export NDK_GCC_x64=“/root/android/ndk/android-ndk-r17c/toolchains/x86_6

2022-05-05 13:34:23 552

原创 Android-怎么就不卡了呢之Choreographer

void doScheduleCallback(int callbackType) {synchronized (mLock) {if (!mFrameScheduled) {final long now = SystemClock.uptimeMillis();if (mCallbackQueues[callbackType].hasDueCallbacksLocked(now)) {scheduleFrameLocked(now);}}}}这个方法中先是做了一些判断,mFrameSc

2022-05-05 13:32:40 107

原创 Android-开发经验分享:挺重要的网络基础

1计算机网络体系结构即经常看到的计算机网络体系的分层结构,理清这个还是有必要的,防止对Http和Tcp两个根本不在同一层的协议纠缠不清。 根据不同的参考模型,分层结构有几个不同的版本,如OSI模型以及TCP/IP模型,下面 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 就以比较经常看到的的5层结构为例:五层的体系结构至上往下,最终可以实现端对端之间的数据传输与通信,他们各自负责一些什么,最终如何实现端对端之间的通信?1.应

2022-05-05 13:30:54 123

原创 Android-世界的活点地图-dumpsys(Android-Detail-工具)

因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据(有可能是调试程序 Bug 或者收集某些信息),就要把他转储(dump)为静态(如文件)的形式。否则,这些数据你永远都拿不到。2、dump 转储的是什么内容(dump 的对象)?其实上边已经提到了,就是将动态(易失)的数据,保存为静态的数据(持久数据)。像程序这种本来就保存在存储介质(如硬盘)中的数据,也就没有必要dump。现在,dump作为&.

2022-05-05 13:29:15 261

原创 Android 面试:事件分发8连问

forward(q);} else if (shouldDropInputEvent(q)) {finish(q, false);} else {traceEvent(q, Trace.TRACE_TAG_VIEW);final int result;try {result = onProcess(q);} finally {Trace.traceEnd(Trace.TRACE_TAG_VIEW);}apply(q, result);}}}如上所示:1.QueuedInput

2022-05-05 13:25:02 324

原创 Android 面试总结 - LiveData

listOf(“张三”, “李四”)}}}MainViewModelclass MainViewModel: ViewModel() {private val nameList = MutableLiveData<List>()val nameListResult: LiveData<List> = nameListprivate val mainRepository = MainRepository()fun getNames() {// 使用协程模拟请求过程

2022-05-05 13:22:52 163

原创 Android 自定义 View _ 扭曲动效

newPos[index * 2] = fx;origPos[index * 2] = newPos[index * 2];//Y轴坐标 放在奇数位newPos[index * 2 + 1] = fy;origPos[index * 2 + 1] = newPos[index * 2 + 1];index += 1;}}}这里我把初始化数组写成了一个函数,注意的是,数组按照第一个点的x1,y1,然后第二个点的x2,y2,这样的顺序存储。我们先把图给画出来看看效果,我们把这些点集也画出来:

2022-05-04 10:49:12 165

原创 android 网络实时监听网络状态变化 及 网络类型判断

1. 网络类型判断TelephonyManager 中 定义常量值public static final int NETWORK_TYPE_1xRTT = 7;public static final int NETWORK_TYPE_CDMA = 4;public static final int NETWORK_TYPE_EDGE = 2;public static final int NETWORK_TYPE_EHRPD = 14;public static final int NETWO

2022-05-04 10:47:26 488

原创 Android 组件化开源 app -开眼短视频(OpenEyes)

当然由于是个人闲暇时间基于兴趣开发的,没有 UI 小姐姐 和测试小姐姐的陪伴,自然存在许些缺陷,当然写这个项目更多的是为了学习和锻炼 app 架构搭建的思维,希望能够帮到刷到这个博文的小伙伴,一起学习一起进步。功能方面,想了想觉得还是没啥好说的���就是 UI 上显示的那样,相信在座的各位看官都是熟的不能再熟了,app 使用技术介绍Mvvm 架构设计 关于各种 mvx 的区别,我就不一一介绍了,上 Google 搜一下就好,关于项目中使用的 mvvm 设计封装,请移步 [这里]((.

2022-05-04 10:45:24 322

原创 Android 百度地图SDK 自动定位、标记定位

① 获取开发版SHA1鼠标点击右侧边栏的Gradle→ app→Tasks→ android→ 双击signingReport当你的AS版本为最新版时,你会发现这里好像有点不一样了,找不到signingReport了,这是AS更新之后默认这个功能关掉了,需要去手动打开它。在设置里面如下图这里默认勾选上了,现在把这根勾选上的去掉,然后Sync,或者点击这个小图标。然后你的项目的右侧边栏就会出现这个熟悉的task了。粘贴到开发版SHA1的输入框② 获取发布版SHA1Build → Ge

2022-05-04 10:43:33 1619

原创 Android 布局异步加载中的pools对象缓存池源码分析

obj.inflater = null;obj.parent = null;obj.resid = 0;obj.view = null;mRequestPool.release(obj);}使用方法,如下:public class MyPooledClass {private static final SynchronizedPool sPool =new SynchronizedPool(10);public static MyPooledClass obtain() {MyPool

2022-05-04 10:39:46 193

原创 Android 属性动画(Property Animation) 完全解析

public void rotateyAnimRun(final View view){ObjectAnimator anim = ObjectAnimator//.ofFloat(view, “zhy”, 1.0F, 0.0F)//.setDuration(500);//anim.start();anim.addUpdateListener(new AnimatorUpdateListener(){@Overridepublic void onAnimationUpdate(Value

2022-05-04 10:37:59 665

原创 Android 封装JSON工具类+JsonUtil

@param dateFormat@return*/public static String toJson(T obj,DateFormat dateFormat){String json=null;try { 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】// mapper.configure(SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIER..

2022-05-04 10:36:21 466

原创 Android 安卓DataBinding(九)·运算符

android:layout_width=“match_parent”android:layout_height=“match_parent”android:background=“#FFFFFF”tools:context=“.MainActivity”><TextViewandroid:layout_width=“match_parent”android:layout_height=“230dp”android:background=“#03A9F4”android:grav

2022-05-04 10:34:03 540

原创 Android 存储:Internal Storage的用法以及与External storage 的区别

========向内部存储器中创建一个私有文件并向其中写入数据,使用以下方法:1. 调用openFileOutput(String fileName, int mode)方法,若fileName对应的文件存在,就打开该文件,若不存在,并以mode权限创建该文件并打开,该方法返回一个指向fileName对应文件的FileOutputStream,使用这个FileOutputStream可向文件中写入数据。2. 调用FileOutputStream对象的write()方

2022-05-04 10:32:06 359

原创 Android安卓进程保活(二)设置前台Service

Android进程保活有很多种方法可以实现Android的进程保活,比如通过  1像素且透明Activity提升App进程优先级、 通过设置前台Service提升App进程优先级、 Java层的双进程拉活、 JobScheduler实现、 NDK双进程守护、 使用账户同步拉活、 workmanager实现。下面这幅图,说明的是:红色部分是容易被回收的进程,属于android进程绿色部分是较难被回收的进程,属于android进程其他部分则不是android进程,也不会被系统回

2022-05-03 11:52:22 2895

原创 Android大势已去?35岁程序员只能等优化?

我认为,移动开发是不局限于App开发的,比如 IoT、音视频、边缘计算、VR/AR,很多新的技术浪潮其实都可以融入到移动开发的体系里。对我们开发者来说,一定要打好基础,随时准备战斗。不论寒冬是否到来,都要把自己的技术做精做深。虽然目前移动端的招聘量确实变少了,但中高端的职位还是很多的,这说明行业只是变得成熟规范起来了。竞争越激烈,产品质量与留存就变得更加重要,我们进入了技术赋能业务的时代。对于我们来说!技术不是全部,想明白 想通了 就好了,信息产业这行或者相关行业 大有可为 不要把自己绑死在技术上,

2022-05-03 11:50:41 99

原创 Android备忘录《内存泄漏》

int s1 = 0;Sample mSample1 = new Sample();public void method() {int s2 = 1;Sample mSample2 = new Sample();}}Sample mSample3 = new Sample();Sample 类的局部变量 s2 和引用变量 mSample2 都是存在于栈中,但 mSample2 指向的对象是存在于堆上的。mSamp 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源

2022-05-03 11:48:22 87

原创 Android基础知识点(持续更新中)

tv_name=( 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 TextView)findViewById(R.id.tv_name);tv_password=(TextView)findViewById(R.id.password);tv_name.setText(name);tv_password.setText(password);[](()2.数据回调==============================

2022-05-03 11:46:16 491

原创 Android启动过程分析

(2) 解析init.rc文件:该阶段对init.rc脚本文件进行解析,主要对Service(服务)和Action(动作)进行解析。其中,Service由命令(Command) 和 一系列服务的附加内容(Option,选项)组成,如**:“service vold /system/bin/vold”为一个Service**,而“socket vold stream 0660 root mount“则为配合该服务使用的Option;**Action则由 一系列的命令 组成,**如:“on init mkdir

2022-05-03 11:44:36 96

原创 Android从零撸美团(一) - 统一管理 Gradle 依赖 提取到单独文件中

butterKnifeVersion = “8.8.1”bannerVersion = “1.4.10”loggerVersion = “2.1.1”baseRecyclerViewAdapterHelperVersion = “2.9.30”dbflowVersion = “4.2.4”app = [recyclerView : “com.android.support:recyclerview-v7:recyclerViewVersion",rxjava:"i

2022-05-03 11:42:40 461

原创 android——dialog对话框总结

case R.id.button4: //多选按钮showMultiChoiceDialog();break;case R.id.button5: //等待showWaitingDialog();break;case R.id.button6: //进度条showProgressDialog();break;case R.id.button7: //编辑showInputDialog();break;default:break;}}//三个按钮private void s

2022-05-03 11:40:56 258

原创 Android-Studio-4-1-发布啦

已知问题和解决方法目前除了图像分类和样式转换外,对 TensorFlow Lite 模型对问题域的支持受到限制,尽管导入应该可以正常工作,但是某些模型输入和输出 TensorBuffers 并不友好,对于没有任何元数据的模型,所有模型输入和输出均为 TensorBuffers 。不支持输入和输出非 DataType.UINT8 或 DataType.FLOAT32的数据类型。此功能仍在开发中,因此请提供反馈或报告错误:[issuetracker.google.com/issues/new?

2022-05-03 11:36:43 220

原创 Android----banner使用详解

android:layout_height=“250dp”android:layout_margin=“10dp”app:banner_radius=“20dp” // 圆角android:clickable=“true” // 是否可点击app:banner_indicator_selected_color=“#95F2EC”app:layout_constraintEnd_toEndOf=“parent”app:layout_constraintHorizontal_bias=“

2022-05-03 11:32:51 2719 1

原创 【译】Dart _ 什么是Mixin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5VLV08GG-1651219431907)(https://user-gold-cdn.xitu.io/2018/9/24/1660bbeace60ed18?imageView2/0/w/1280/h/960/ignore-error/1)]我们这里有一个名为Animal的超类,它有三个子类(Mammal,Bird和Fish)。在底部,我们有具体的一些子类。 小方块代表行为。例如,蓝色方块表示具有此行为的类的实例可以swim

2022-04-29 16:04:11 101

空空如也

空空如也

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

TA关注的人

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