- 博客(384)
- 资源 (19)
- 收藏
- 关注
原创 Android 博客目录整理
之前有整理过Android部分的博客目录的,不幸弄丢了,再来整理一份吧!希望这次不要再丢了!!!初识Android1、Android开发相关介绍及工具的安装 2、 Android电话拨号程序 3、 Android:发短信Demo与Activity相识 Activity的2种启动方式 Android UI之初体验五大布局1、 Android UI设计的三种常见布局(LinearLayout
2015-10-18 13:19:40 2972 7
原创 Opengl(一)基础知识
1992年发布第一个版本,到现在有30多年历史1997年支持多平台2003年发布2.0,是其一个重要版本,加入了shader2008年发布3.0,功能得到较大提升2014年4.4和GLES3.0发布,移除过时API,功能统一。
2024-07-28 21:34:04 293
原创 鸿蒙Harmony(十一)Stage模型
Stage模型:HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。
2023-12-28 21:28:56 1228
原创 鸿蒙Harmony(十)动画
属性动画是通过设置组件的animation属性来给组件添加动画,当组件的width、height、Opacity、backgroundColor、scale 、rotate、translate等属性变更时,可以实现渐变过渡效果。
2023-12-28 13:14:42 701
原创 鸿蒙Harmony(九)页面路由
页面路由是指在应用程序中实现不同页面之间的跳转和数据传递。同时,Router模块提供了两种实例模式,分别是Standard和Single。这两种模式决定了目标url是否会对应多个实例。Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。Single:单实例模式。即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url页面会被移动到栈顶,并重新加载;如果目标页的url在页面栈中不存在同url页面,则按照标准模式跳转。
2023-12-28 10:50:18 1352
原创 鸿蒙Harmony(八)ArkUI--状态管理器之@Prop 和 @Link & @Provide 和 @Consume & @ObjectLink 和@Observed
承接。
2023-12-27 22:13:09 761
原创 鸿蒙Harmony(八)ArkUI--状态管理器之@State
在声明式UI中,是以状态驱动视图更新状态:指驱动视图更新的数据(被装饰器标记的变量)
2023-12-27 22:11:49 1206
原创 鸿蒙Harmony(七)ArkUI--循环foreach&List组件&自定义组件
创建自定义组件 @Component@Builder@Style:仅可封装组件通用属性@Extend:仅可定义在全局,可以设置组件的特有属性@Componentbuild() {} }代码示例@Componentprivate name: string = "苹果"build() {Row() {.width(80).borderRadius(40) //圆角。
2023-12-27 10:56:34 1391
原创 鸿蒙Harmony(六)ArkUI---基础组件:Image、Text、TextInput、Button、Slider
【代码】鸿蒙Harmony(六)ArkUI---基础组件:Image、Text、TextInput、Button、Slider。
2023-12-27 10:56:03 489
原创 鸿蒙Harmony(五)ArkUI---基础组件:Text、TextInput、Button、Slider
1.设置文案在资源文件中添加对应的文本资源2.属性设置效果。
2023-12-27 10:55:19 989
原创 鸿蒙Harmony(四)ArkUI---基础组件:Image
权限申请文档(安全中的访问权限): https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/accesstoken-guidelines-0000001493744016-V2。Cover(默认值):保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。None:保持原有尺寸显示。
2023-12-27 10:53:27 745
原创 鸿蒙Harmony学习(三)TypeScript语言学习
TypeScript在JavaScript的技术长加入了静态类型检查功能,因此每个变量都有固定的数据类型我们可以通过TypeScript官网的playground来简单运行一下我们的程序。
2023-12-27 10:52:58 514
原创 鸿蒙Harmony开发学习(一)运行helloworld
HarmonyOS与OpenHarmony(1)本质上的不同是:HarmonyOS是鸿蒙操作系统,而OpenHarmony则是从开源项目。这里可以联想一下Android,比如小米手机在Android开源系统的基础上开发了MIUI的手机操作系统,HarmonyOS就类似于MIUI,OpenHarmony类似Android基础底座。(2)HarmonyOS:是双框架,内聚了AOSP(Android Open Source Project )和OpenHarmony等。
2023-12-27 10:45:57 1427
原创 IOS学习-02 OC--封装、继承、多态
/ 成员变量方案修饰符问题1、@public: 公有 - 在类内类外都可以使用并且可以被继承2、@private: 私有 - 在类内可以使用,类外无法调用,并且不可被继承3、@protected: 受保护 - 在类内可以使用,类外无法调用,并且可以被继承4、 @package: 框架权限 - 在框架内相当于受保护,在框架外相遇私有。// 方法没有访问修饰符。
2023-02-26 21:45:39 300 1
原创 IOS学习-01 OC--helloword示例记录
执行成功cc -c 之后,调用cc xx.o. 发现报错,报错是因为运行后并没有引入NSLog的框架内容导致,需要调用cc xx.o -framework Foundation。ps:过程中如果不知道需要import什么内容,可以通过cc -c xxx.m 命令行运行后,会有错误提示,根据错误提示复制对应内容即可。3、执行cc xx.o。
2023-02-19 22:00:21 147
原创 脱糖与DX、D8、R8
脱糖脱糖含义:lamdal表达式在打包构建期间被转换成内部类的形式,这个过程叫脱糖(java编译时不会这样)。为了让我们能使用上Java 8的特性,Google使用Transformation来增加了一步编译过程 →脱糖(desugaring)。脱糖实现的大概发展历程如下:D8D8作用:脱糖 + 将.class字节码转换成dexR8整合了Proguard和D8 ,减少了一个编译步骤,同时保留了字节码优化能力两者关系1、ProGuard→ 压缩、优化和混淆Java字节码文件的免费工具,开源
2022-03-24 16:17:25 1109
原创 Android 性能优化(1)--性能优化介绍
1、性能优化需要解决的问题2、性能优化解决方案根据项目阶段的演进学习性能优化解决方案演进的作用:1、深刻理解性能优化手段、思维发展历程2、面试展现对更高层次的思考、理解3、业界优秀的平台化实践...
2022-02-05 16:06:05 403
原创 Android性能优化总提纲
优化工具:(1)Systrace:关注Frames,正常:绿色圆点丢帧:黄色或者红色–alerts栏(2)LayoutInspector(AS–tools–LayoutInspector)(3)可以通过Choreographer来获取FPS,Choreographer.getInstance().postFrameCallback()。如何优雅的获取界面的布局耗时常规方式:获取每个界面加载耗时 (对setContentView 记录时间)AOP/ArtHook:(1)aop:切Activ
2022-02-05 16:05:17 142
原创 Android 性能优化(6)--apk瘦身优化
瘦身优化及apk分析方案介绍瘦身优势1、下载转换率的提升2、头部App都有Lite版本3、渠道合作商要求apk的组成1、代码相关:classes.dex2、资源相关:res、asserts、resources.arsc3、so相关:libapk分析1、ApkTool反编译工具(官网:https://ibotpeaches.github.io/Apktool/)命令:apktool d xx.apk...
2022-02-04 16:31:02 319
原创 Android 性能优化(5)--卡顿优化
卡顿优化CPU ProfilerSystraceStrictMode卡顿问题难的排查是比较难的,一方面因为卡顿问题产生的原因错综复杂,比如:代码、内存、绘制、IO操作等,另一方面,有的场景下的卡顿问题,可能难易复现。工具选择CPU Profiler图形的形式展示执行时间,调用栈等信息全面,包含所有线程缺点:运行时开销严重,整体会变慢,可能会带偏我们优化的方向。使用:Debug.startMethodTracing("")Debug.stopMethodTracing();生
2022-02-04 15:35:27 375
原创 Android 性能优化(3)--内存优化--(内存优化工具、内存管理机制、内存抖动、内存泄漏)
内存优化及工具Memory profiler特点方便直观线下使用使用Android studio工具点击MEMORY后,如下:可以看到当前应用运行总的大小是446M,java占44M,Native201,点击垃圾桶按钮旁边的下载图标按钮会得到如下具体数据shallow size 是自己的大小retained size 是引用链对象总共占用的大小Memory Analyzer特点强大的Java Heap分析工具,查找内存泄漏及内存占用生成整体报告、分析问题线下深入使用使
2022-02-03 15:43:54 122
原创 Android 性能优化(2)---启动优化---2(方法耗时获取与异步初始化)
启动优化内存优化网络优化优化工具:(1)Systrace:关注Frames,正常:绿色圆点丢帧:黄色或者红色–alerts栏(2)LayoutInspector(AS–tools–LayoutInspector)(3)可以通过Choreographer来获取FPS,Choreographer.getInstance().postFrameCallback()。如何优雅的获取界面的布局耗时常规方式:获取每个界面加载耗时 (对setContentView 记录时间)AOP/ArtHook
2022-02-02 17:16:49 247
原创 Android 性能优化(2)---启动优化--1(启动优化介绍+启动时间测量)
启动优化介绍(1)背景介绍为什么要进行启动优化?第一体验和八秒定律,用户接触app首先就是第一体验比较重要,其次,app如果打开时间超过8s,大概会流失70%的用户。(2)启动分类:冷启动、热启动、温启动冷启动:特点:耗时最多,衡量标准,流程:ClickEvent—>IPC–>Process.start—>ActivityThread—>bindApplication---->ActivityLifeCycle—>ViewRootImpl热启动:特点:最快
2022-02-02 11:04:52 173
原创 Android 固定View在键盘上方
简介1、提供工具类2、对外提供2种使用方式:a、根布局必须是RelativeLayout b、使用PopWindow实现。代码1、固定在键盘上方的控件Viewclass FixOnKeyBoardView : FrameLayout { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs,.
2022-01-21 16:50:02 3334
原创 adb 和android开发常用命令
adb logcat -d time > 1.logadb logcat | grep wdf查看当前Activity :adb shell dumpsys window w | grep name=""查看当前栈顶的Activity :adb shell dumpsys activity | grep “mFocusedActivity”查看当前栈顶的Activity的Fragment :adb shell dumpsys activity your.package.name或者:adb
2021-04-19 16:15:15 251 3
原创 Kotlin 语法糖
1、变量声明不推荐使用 lateinit 和!!(容易空指针)// goodvar tv: TextView? = nulltv?.text = ""// badlateinit var tv: TextViewtv!!.text = ""2、可空参数与返回 + 类型转换// 可空参数与返回fun init(name: String?, age: Int?):String? { }// 类型转换 as?// Good(context as?
2021-03-28 02:00:18 560
原创 Mac brew update卡死 和 install 总是显示 No similarly named formulae found.解决
1、brew update 卡死问题卡死的问题,我是参考的下面这篇文章https://blog.csdn.net/evane1890/article/details/108795717(1)#更新Homebrewcd "$(brew --repo)"git remote set-url origin https://mirrors.ustc.edu.cn/brew.git#更新Homebrew-corecd "$(brew --repo)/Library/Taps/homebrew/hom
2021-03-04 11:05:48 16011 10
原创 算法:三线程打印
1 condation方式如下,其他方式参考https://danfeng.blog.csdn.net/article/details/112133256public class ThreeThreadPrintCondition { public static void main(String[] args) { ReentrantLock lock = new ReentrantLock(); Condition conditionA = lock.new
2021-02-07 15:45:11 337
原创 算法:链表
两数之和https://leetcode-cn.com/problems/add-two-numbers/思路:1、链表 head 记录初始链表,tempHead 记录当前点的链表2、输入l1 与 l2 长度可能不一致3、进位记录 carrypublic static ListNode addTwoNumbers(ListNode l1, ListNode l2) { int carry = 0; ListNode head = new ListNode();
2021-02-07 15:38:33 462
原创 算法:树
树的最大路径和https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/思路:递归+遍历最大路径和按照一个树 比如【a,b,c】 实际是三选一问题:b+root 与c+root 或者 b+c+rootmaxSum 用于更新最大和,treeMaxSum int maxSum= Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { treeMaxS
2021-02-07 15:35:01 396
原创 算法(二)数组
1 两数相加=指定的数据,题目要求如下:题目链接://给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 //// 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 //// //// 示例: //// 给定 nums = [2, 7, 11, 15], target = 9////因为 nums[0] + nums[1] = 2 + 7 = 9//所以返回 [0, 1]// //
2021-02-07 15:33:49 605
原创 Android 其他问题点
1 Serializable与Parcelable 区别Sericalizable 是java 提供的进行序列化的方式,对对象整体序列化,更适合网络数据进行序列化的时候使用。Parcelable 是android提供的一种序列化的方式,可以将一个完整的对象进行分解,对部分分别序列化,效率更高,更适合内存中进行数据传输的时候使用。2 Android为什么使用Bundle 传输数据,为啥不是hashMap2个原因:(1)小的数据量:Bundle 内部封装了ArrayMap进行的存储,ArrayMap本
2021-01-25 03:47:26 355 1
原创 Android View第一次绘制
疑问1 Android 走生命周期的时候,View究竟是在哪个生命周期进行测量布局绘制的呢?2 在该生命周期中通知View的绘制流程是怎样的?解答1 Android的resume周期开始绘制的,这也是我们为什么在onResume的时候获取不到view的狂高2 下面来看下具体流程(view的绘制是通过ViewRootImp的scheduleTraversals方法,因此看下怎么从ActivityThread找到ViewRootImp的scheduleTraversals的调用的)直接来看Activ
2021-01-21 10:39:29 421
原创 app启动流程 、四大组件 、window、事件分发
zygote参考文章:https://blog.csdn.net/hongxue8888/article/details/102583663zygote 作用启动system-server孵化应用进程zygote 进程怎么启动的init进程启动后,加载init.rc 配置文件,其中zygote就是其中一个。zygote 是通过socket的通讯方式。app启动流程了解Linux下进程的启动方式2种方式都是通过fork这个函数启动的:fork函数返回2次,一次子进程返回一次父进程的返回,
2021-01-16 16:16:48 360
tinkerDemo的两个apk可以安装试一下
2016-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人