- 博客(82)
- 资源 (5)
- 收藏
- 关注
原创 DevEco中被忽略的实用功能
发现了吗?DevEco Studio实际上不只是一个传统意义上的IDE,它是一个融合了最新文档的集合。这些文档内容来自官方,是第一手的资料。它既可以帮助新手入门,也可以成为日常开发时的“僚机”,帮助开发者快速翻阅API文档,找到答案。实际上,一个最为理想的情况是:开发者只需要打开UI设计稿和DevEco Studio,即可完成App的开发工作。而在这之前,至少还需要打开一个浏览器用来搜索相关的技术资料。希望上述技巧能够帮到每一位开发者。
2024-01-16 10:02:11 975
原创 半小时实现GPT纯血鸿蒙版
仅需半小时,即可实现纯血鸿蒙版本的ChatGPT!废话少说,先看效果图:如上图所示,这个小Demo实现了AI智能问答。靠右加粗的文本是用户点击底部提交按钮后出现的;后面靠左对齐的普通文本是来自AI的回答内容。当然,整个内容是可滑动浏览的,当内容被滑动时,屏幕右侧将出现滚动条。最后,为什么UI是英文呢?因为鸿蒙的模拟器目前没有内置中文输入法,恰好这个AI服务也可以用英文来回答。值得注意的是:这个小Demo之所以我称其为Demo,是因为它的功能实在是太简单了。更重要的,UI也需要好好美化一下……
2024-01-12 14:02:16 1409 2
原创 做个清醒的程序员之拒绝工作
难道我们可以自己决定做与不做什么工作吗?工作内容不都是上级给安排好的吗?如何处理那似乎总也无法清空的待办事项列表?阅读这篇文章,或许可以解决上述疑惑。
2023-04-20 10:46:09 515 1
原创 做个清醒的程序员之拥抱AI
比如就拿前面我举的说电影的例子,在使用AI提炼重点之前,必然要先进行大量的训练,把已有影片及其重点传入其中,再经过一套靠谱的算法,最终才有可能产出一套可靠的模型。必须各种类型的电影都得来,因为未来这套模型将用于不同类型的影片,因为机器AI就是我们人类给它啥,它才能“认识”啥,它不具有自主意识,也就不会具有创新能力。在AI的加持下,这种提炼影片重点,加解说的工作对于AI来说其实是并不难,而且比人做得更快甚至更好,势必会对创作这种类型的作者带来冲击。首先,我想强调的是,你不是一个人。
2023-04-19 10:26:28 1119
原创 做个清醒的程序员之打造核心竞争力
核心竞争力打造不可替代性的关键环节,一万小时定律是打造核心竞争力的方式,但很多人用错了方法。怎样避坑,如何科学地践行一万小时定律呢?
2023-04-18 07:37:34 176
原创 做个清醒的程序员之破解内卷漩涡
我查了一下,果真如此。其实不只是苹果公司,每一家伟大的企业做的每一次决定,都有其原因,看不透的人,往往需要先在自身上找问题。其实没那么简单,虽然看上去雇佣成本低了,但是低价来的农民,怎么可能心甘情愿地付出劳动,肯定会想办法偷懒摸鱼,所以地主其实也没获得多少好处。也就是说,当内卷到一定程度的时候,就会发生革命性的进化,这是社会发展的规律,是不受某个人或是某些人的意志而转移的。作为软件开发者,如果看到的都是ChatGPT的优点,忽视这些缺点,一窝蜂地涌入,很可能不会有什么结果,只会相互竞争,陷入内卷?
2023-04-17 13:54:26 474
原创 我的十年编程路 2022年篇
2022年,是我工作的第10个年头。我的工作内容主要是由编程和写作构成的,正如前一篇所描述的那样,刚开始是编程为主,写作为辅。后来慢慢地,编程就成为了写作题材的“源泉”,为写作造血。到现在,我已经分不清编程和写作,到底哪一个是主,谁又是辅,似乎写作对我来说更重要一些。这一年的开端,新冠的形势异常严峻,我所在的小区一直是只进不出的政策。所以无奈,居家办公。但是人总不出屋,说到底还是会不舒服的。于是我和老婆便加入了小区的志愿者团队,帮着维持秩序之类的,我有幸和一位医生给行动不便的老人上门核酸。总之这段经历我觉
2023-03-15 09:44:31 741 1
原创 我的十年编程路 2021年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2021年的复盘,讲述了2021年发生的事。这一年,技术上取得突破,写作上获得温暖。
2023-03-14 09:27:28 2012 1
原创 我的十年编程路 2020年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2020年的复盘,讲述了2020年发生的事。这一年,奔三成就达成,意味着事业开始阶段的结束。我清晰地感受到学习的重要与时间的宝贵。
2023-03-13 09:46:29 13750 6
原创 我的十年编程路 2019年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2019年的复盘,讲述了2019年发生的事。这一年,我的写作生涯终于开始盈利。
2023-03-09 09:20:43 518 1
原创 我的十年编程路 2018年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2018年的复盘,讲述了2018年发生的事。这一年是我家庭与事业双丰收的一年。这一年到底发生了什么呢?
2023-03-08 08:11:48 470
原创 我的十年编程路 2017年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2017年的复盘,讲述了2017年发生的事。这一年对于我而言,是“自由”,是“领悟”,是“改变”,更是“进化”。
2023-03-07 13:41:32 1405 4
原创 我的十年编程路 2016年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2016年的复盘,讲述了2016年发生的事。这一年,我养成了独立思考的习惯。虽然经济上很拮据,但是精神上很富有。感谢这一年的经历,直到现在,我仍然很怀念这段时光。
2023-03-06 10:47:52 164
原创 我的十年编程路 2015年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2015年的复盘,讲述了2015年发生的事。这一年的关键词是:“持续精进;投资未来。”
2023-03-05 11:35:20 159 1
原创 我的十年编程路 2014年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2014年的复盘,讲述了2014年发生的事。这一年让我明白“积极主动”的力量,并亲身践行,大有收获。
2023-03-02 11:00:09 717
原创 我的十年编程路 2013年篇
跟你聊聊我的工作经验,希望能对你有帮助。这一次,是2013年的复盘,讲述了2013年发生的事。这一年教会我做个“理性乐观派”。
2023-03-01 09:55:22 776 1
原创 聊聊志愿填报那点事儿
2021年的高考已经结束了,如果你恰好是今年的考生,或者考生家长的话,无论你在哪个城市,现在大概应该是填报志愿的时候了。很多人觉得,好不容易考完试了,终于可以放松一下了。别急,还有最后一关没有过,那就是填报志愿。填报志愿这件事儿,本质上说就是“选择大于努力”的最佳实践之一了。它将决定接下来至少四年的时间,你在哪里度过,如何度过,以及大学毕业时以怎样的自己走向社会。我们都知道,对于刚迈入20岁的年轻人来说,时间是多么珍贵。很多对一生都受益的道理和本领都是在这几年之间学到的,还会遇到挚友甚至是一生的伴侣。反
2021-06-28 16:57:35 272
原创 【聊技术】在Android中实现自适应文本大小显示
本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示。想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的。比如列表中的文章标题、界面下方的按钮文本等等。为了尽可能让这些文字可见,传统的做法是通过文本长度设置文本大小,或者通过android:ellipsize属性设置文本省略方式等等。实际上,从Android O开始,Android API引入了自适应文本大小的简易实现。它不仅可以用于TextView,对于Button等具有文本显示的控件同样适用。通过and
2020-12-08 10:23:05 1496
原创 记一次腾讯TBS浏览服务集成实践
这次的分享源于最近的实际开发工作。项目需求是在原生Android应用中嵌入WebView,放置用于支撑音视频直播业务的Web页;另外还需提供Word、Excel、PowerPoint、PDF等常见文档格式的内容预览。经过一番技术选型,最终选定集成腾讯TBS浏览服务进项目,支撑如上所述两个功能。能力集成首先进入下图所示网页,在该下载页下载SDK并保存。下载成功后,将jar包放入要集成该能力的Module的libs目录下。随后,在Android Studio中以Project
2020-11-30 13:20:26 863
原创 解谜:为何用了9-Patch背景图后自带Padding属性?
本次分享的主题源于笔者在实际开发中遇到的问题。具体现象为:当普通的9-Patch图用作TextView的backGround属性后,整个TextView便有了一定的Padding值。但笔者并没有给定padding属性,甚至在预览视图中,也没有展现出padding效果。但运行起来后,便莫名其妙地有了内边距。我们先来看布局代码:<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.an
2020-10-24 07:19:37 301
原创 Flutter如何有效地退出程序
今天博主来谈一个开发Flutter App的小技巧——怎样有效地退出程序。这种方法典型的应用场景就是用户许可协议的同意与否。从用户的角度讲,虽然大部分人都会无脑点击“同意”,但我们仍不应忽视“不同意”的作用——退出App。笔者在网络上搜索了一下相关的API,发现大部分的文章都在推荐一种方法,即:SystemNavigator.pop();但该方法在iOS中并不适用。实际上,这种方法将会通知原生代码,请求原生代码退出App。换句话说,如果在原生层面并没有退出App的操作,就会报错。报错的示例如下:
2020-08-20 11:47:26 1773
原创 用Flutter做桌上弹球?聊聊绘图(Canvas&CustomPaint)API
本文是Flutter中Canvas和CustomPaint API的使用实例。首先看一下我们要实现的效果:结合动图演示,列出最终目标如下:在程序运行后,显示一个小球;每次程序启动后,小球的样式均发生随机性变化,体现在大小、颜色和位置三点;小球运行的规律参考桌球或三维弹球游戏;单击屏幕,小球变色;双击屏幕,小球暂停/恢复运动;长按屏幕,小球开始/停止自动变色。运用的主要技术点:Canvas和CustomPaint API。运行平台:Android、iOS源码地址:Github
2020-07-30 15:23:31 578
原创 一切皆组件的Flutter,安能辨我是雄雌
从一开始接触Flutter,相信读者都会铭记一句话,那就是——一切皆组件。今天我们就来体会一下这句话的神奇魔力,我们先从实际的产品需求说起。我们先来看一个简化的运行图:我们要实现如上图所示的日期选择器,App是iOS风格。Flutter SDK自身有类似上图的日期选择器,但是Material Design的,于是我到Flutter库中找到了一个名为flutter_date_pickers的三方库,版本为0.1.4(https://pub.flutter-io.cn/packages/flutter_
2020-07-27 13:16:39 616 1
原创 像写Flutter一样开发Android原生应用
要问到Flutter和Android原生App,在开发是有何区别,编程方式是绕不开的话题。Flutter采用声明式编程,Android原生开发则采用命令式编程。声明式编程 VS. 命令式编程我们首先要明确的,是何为声明式编程,何为命令式编程。何为声明式编程摘录一段来自百度百科的定义:声明式编程通常被定义为除命令式以外的编程范式。同时存在一些其他的定义,这些定义不是简单的将声明式编程和命令式编程做对比,例如:声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算;任何没有副作用的编程语言
2020-07-17 14:23:40 1210
原创 大前端时代搞定PC/Mac端开发,我有绝招
如果你是一位前端开发工程师,对“跨平台”一词应该不会感到陌生。像常见的前端框架:比如React、Vue、Angular,它们可以做网页端,也可以做移动端,但很少能做到跨PC、Mac端,也就是我们熟知的Windows、Linux以及macOS上的应用程序。即使有,受限于JS的性能瓶颈,当有大量的科学计算需求时,则会略显疲态。有没有一个理想的UI框架能够通杀它们所有呢?答案是——Flutter。Flutter的性能优势做为一个通用的跨平台的UI框架,Flutter在性能方面的突出表现是非常引人夺目的。拿A
2020-07-11 09:58:28 742
原创 Flutter 自定义组件实战之Cupertino(iOS)风格的复选框
继上一篇Flutter自定义组件的视频短课(视频地址: https://www.bilibili.com/video/BV1ap4y1U7UB/ )后,我们继续来聊自定义组件。视频中我为大家详解了Cupertino风格的单选框的实现,这次我们就说说Cupertino风格的复选框。我们先来看看效果:如上两图所示,第一张图是未选中的状态,第二张图是勾选后的状态,在点击时有点击效果。为了方便大家看出效果,我特意放大了组件大小。其实很简单,整个组件就是Container和Icon组成的。Container是
2020-07-05 13:58:59 926
原创 在Flutter中使用SetState无效?可能是忽略了这个!
这次是Flutter开发技术分享,解决的问题点来自本人实际的开发经历。首先描述一下问题:在某个组件中调用setState()方法更新该组件状态,结果是无法做到更新效果,组件仍然维持原状。下面我们用代码示例还原问题场景:class _MyHomePageState extends State<MyHomePage> { bool isChecked = false; showTestDialog() { showDialog( context: context,
2020-06-20 10:45:13 4660
原创 Flutter 中由 BuildContext 引发的血案
今天和各位分享一个博主在实际开发中遇到的问题,以及解决方法。废话不多说,我们先来看需求:我们要做一个iOS风格的底部菜单弹出组件,具体涉及showCupertinoModalPopup()方法,该方法被执行后,会出现如下图类似所示的菜单弹出视图:相信这个弹出菜单视图都有见过吧?下面重点来了:在本次的项目需求中,该视图的选项文字是由Server端返回的。也就是说,这些选项的内容和个数都不固定,因此不能将其在代码中写固定值。为了简化代码以突出重点,下面放上我在一开始的实现方案: openAction
2020-06-13 10:29:04 803
原创 Flutter 中 GestureDetector 的使用误区
在实际开发中,我们通常需要实现某个组件的更多点击事件。比如:原生的RaisedButton组件是无法响应诸如拖拽或是按下、抬起等细化的动作,它只有一个onPressed()方法来表示。当我们想实现这些细化事件时,通常使用的组件是GestureDetector。我们先来看下面这段代码:GestureDetector( onTap: () { debugPrint("RaisedButton点击阻断"); }, child: RaisedButton( chi
2020-06-09 13:18:03 719
Android Development Patterns Best Practices for Professional Developers
2016-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人