自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hanks软件库

https://hanks.pub

  • 博客(297)
  • 资源 (8)
  • 收藏
  • 关注

原创 SwiftUI-布局-ForEach

注意点:添加 id需要索引的使用count直接对数据循环private struct NamedFont: Identifiable { let name: String let font: Font var id: String { name }}private let namedFonts: [NamedFont] = [ NamedFont(name: "Large Title", font: .largeTitle), NamedFont(n

2021-08-18 09:37:38 591

原创 SwiftUI-JSON序列化、反序列化

Swift5 自带解析extension Encodable{ func toJson() -> String { return String(data: try! JSONEncoder().encode(self), encoding: .utf8) ?? "" }}extension String{ func toModel<T:Decodable>() -> T? { do{ return

2021-08-18 09:35:59 530

原创 SwiftUI-各种布局示例

布局分类紧凑型:默认使用自身大小TextVZstack HStack ZStack贪婪型:默认填充父容器大小CircleGeometryReader 读取上层容器大小紧凑转贪婪.frame(maxWidth:.infinity, maxHeight:.infinity)贪婪转紧凑.frame(width:100, height:100)布局大小.frame().frame()布局位置offsetposition布局大小layoutPriorityGeometryRead

2021-08-18 09:33:33 502

原创 SwiftUI-资源

学习目录&创建工程import SwiftUIstruct ContentView: View { var body: some View { Text("Hello, World!") .padding() }官网地址苹果开发者主页SwiftUI主页官方教程示例SwiftUI文档索引下载 Xcode官方地址创建工程创建工程 - iOSApp - SwiftUI目录结构├── Demo│ ├── Assets

2021-08-18 09:29:07 159

原创 SwiftUI-布局-应用Tabbar

应用底部 Tabbar, 点击切换 tab。NavigationView { TabView { NavigationLink(destination: HomeView()) { Text("进入") } .tabItem { Image(systemName: "square.fill") Text("主页") } Text("发现界面")

2021-08-18 09:27:17 471

原创 学习 Compose 系列(一)环境配置、概念理解、初体验

Jetpack Compose 是用于构建原生界面的新款 Android 工具包。它可简化并加快 Android 上的界面开发。使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。Compose 作为一条新的构建界面的工具,不同于原来解析 xml 生成,应用开发方式也与原来不同,需要重新理解其原理。Compose 放在 Jetpack 中,和 ViewModel LiveData 结合,目标是开发更高效,应用更健壮。官网地址之前通过 kotlin + xml 编写UI界.

2021-06-11 22:12:47 351 1

原创 WebView 实现 NestedScrollingChild

承接上文 NestedScrollingParent 实现复杂交互效果 ,在 NestedScroll 这一套流程中,NestedScrollingChild 不用考虑怎么去通知父布局如何滚动,只需要负责自己的事情:产生滚动事件,并将事件共享出去,产生 fling 事件,共享 fling 。NestedScrollingParent 简称 NP NestedScrollingChild 简称 NC

2016-09-02 10:12:08 3259

原创 NestedScrollingParent 实现复杂交互效果

最终效果:1. 接口NestedScrollingParent 用来配置子视图( NestedScrollingChild )嵌套滚动。NestedScrollingParent 简称 NP NestedScrollingChild 简称 NCNC 产生一个 touch 事件,调用 startNestedScroll,表示开始分享出去 touch 事件, NP 的 onStartNestedSc

2016-09-02 10:11:02 3077 1

原创 写一个福利 Telegram 机器人

官网创建 bot根据文档,在 telegram 里面添加 @BotFather, 然后跟他聊天来创建机器人拿到 token测试在浏览器中(翻墙)输入 https://api.telegram.org/botYOU_TOKEN/getMe 测试: 返回如下格式,说明成功。{ "ok": true, "result": { "id": 249208551,

2016-08-04 10:07:19 75674 6

原创 写一个 ButterKnife

ButterKnife 很多人都用过,能节省很多代码,最多的就是省去了很多 findViewById 语句。接下来自己写一个,就叫 BBKnife 吧。分析在使用 ButterKnife 时,需要书写下面的类似代码,以一个 Activity 为例ExampleActivity.javaclass ExampleActivity extends Activity { @BindView(R.id.

2016-07-31 23:46:39 921

原创 多行 EditText 的光标高度问题

问题改变文本的行间距需要给 EditText 设置 lineSpacingExtra 和 lineSpacingMultiplier 这个时候的 EditText的光标高度就会变得很难看.解决办法自定义 cursorDrawable 然后设置 padding 值原理EditText 在更新光标的视图的时候检查了光标 drawable 的 padding. 计算光标高度会算上相应的值.相关源码:Edi

2016-07-25 00:24:57 2911 1

原创 自动化测试还可以用来干啥

自动化测试就是把一些重复的测试工作利用相关工具自动化,减少重复的劳动。我们不仅可以利用自动化测试工具做测试,还可以利用这些工作做一些其他事情,比如爬数据,曾经抓取过学校的整个学期的课表,空闲教室,帮老爸抓取他的客户联系信息到 excel 表。这种工具不同于一般的脚本爬虫,这相当于正常的用户行为,比如点击输入框,输入文本,点击按钮,而且不用担心动态 js 等问题。大概搜索了几个自动化测试的工具: s

2016-07-22 22:09:45 1127

原创 TextView 设置行高并垂直居中

需求: TextView 多行文本可以设置行高(如20dp),每行文本垂直居中。效果如下:实现思路:通过设置 TextView 的 lineSpacingExtra 和 lineSpacingMultiplier 来实现。lineSpacingMultiplier 的值为行间距的倍数,默认值为 1.0f。lineSpacingExtra 值为具体的行间距值,如20dp。垂直居中靠设置 padd

2016-07-22 22:05:55 11220

原创 学习 Promise (结合 Rxjava)

当前的问题在开发过程中不同的语言都有遇到 callback hell(回调地狱), 回调一般出现在异步操作中。 简单的例子: ① 从网络获取图片 ② 将图片进行压缩 ③ 压缩后的数据保存到本地 以上几个操作都属于异步操作,op1(callback(){ success(){ op2(callback(){ success(){

2016-06-26 16:27:41 2487

原创 利用 Android 手机打造来电通知计划

最近住的地方总在晚上停电,还让不让人活了,大热天的,于是就晚上在外面先找个凉快的地方呆着,但是来电的时间不确定,有时候感觉应该来电了,回去了还是没电,那个热啊。那么问题来了,要是屋里来电了有人告诉我就好了!于是计划写一个小程序让它在屋里来电后通知。 利用现用资源:一台退休的手机 大概思路是这样的:家里的路由器是一直连着电源的,老手机是一直开着 wifi 的,来电后路由器通电,自动连接上网络,

2016-06-22 00:11:51 1015

原创 Android 中获取当前的 Activity

需求:获取当前的 Activity 对象,Activity 是系统创建的,一种方法:在 onCreate 的时候拿到引用,这样就得修改 onCreate 方法,还得维护一个数组去管理 Activity 的引用。第二种方法:通过反射拿到 ActivityThread 中的 mActivities 属性,进而拿到当前的 activity 对象( paused 为 false 的activity)。pub

2016-06-18 19:42:51 3769 1

原创 SwipeRefreshLayout 源码

简介官方文档SwipeRefreshLayout 是一个下拉刷新控件,几乎可以包裹一个任何可以滚动的内容(ListView GridView ScrollView RecyclerView),可以自动识别垂直滚动手势。使用起来非常方便。 1.将需要下拉刷新的空间包裹起来<android.support.v4.widget.SwipeRefreshLayout android:lay

2016-06-18 19:41:25 5526

原创 前端+移动开发

第一阶段前端基本功 HTML+CSS JavaScript基础 JS基本特效 JavaScript高级特性 jQuery基本使用 HTML进阶 JavaScript基础教程 常见特效,例如:tab,导航,整页滚动 正则表达式 选择器 CSS进阶 JavaScript内置对象常用方法 轮播图,用JS制作幻灯片 排序算法,递归算法 DOM操作

2016-05-15 20:18:53 1734

原创 Framework分析-点击Launcher中的图标启动Activity

Launcher也是一个应用,点击一个图标,开启一个新的应用。分析从点击图标到新的应用的Activity执行onCreate的执行流程.注意学习Binder机制 无论是通过Launcher来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都通过Binder进程间通信进入到ActivityManagerService进程中,并且调

2016-02-29 22:55:06 1375

原创 Framework分析-Application的onCreate

ActivityThread并不是一个Thread,而是一个单纯的Java类,查看一下 ActivityThread 的源码final class ActivityThread,并没有继承Thread或者实现Runnable接口,ActivityThread 其中包含 main 方法,程序的入口地方,怎么看出来的呢? 我们开发过程中总会出现程序异常信息,细心看一下log,查看最下面的几行,最终问题出

2016-02-29 22:48:07 1171

原创 Kotlin + RxJava = Functional Powerhouse

原文链接 : Kotlin + RxJava = Functional Powerhouse 原文作者 : Thomas Nield 译文出自 : Hanks.xyz 译者 : hanks-zyh作为一个软件开发人员,我总是寻找方法来达到更少的代码做更多的事情。如果我只要修改一点代码就可以不断适应业务需求变化那就更好了,所以我必须把代码重写。Java语言一直是我的首选,因为它实用

2016-02-29 22:47:03 2039

原创 Ubuntu 14.04 搭建Swift3.0 开发环境

Swift已经出了3.0,开发文档有linux环境的,简单玩一下下载下载压缩包:https://swift.org/download/选择自己的环境,下载对应的压缩包,我这里下载 swift-DEVELOPMENT-SNAPSHOT-2016-02-25-a-ubuntu14.04.tar.gz 到~/Download/Swift 目录下 解压缩$ cd ~/Download/swift# 解压

2016-02-29 22:45:32 2446

原创 Android 动手实现热修复

有了前面文章的理论支持,下面动手自己写一下热修复.

2016-01-25 01:06:25 717

原创 Android 热修复总结

前段时间热修复这个词非常火,当时只是大体看了一下,今天抽空好好看了一下具体原理. 什么是热修复?简单的说就是用户不用重新下载一个新的apk安装,而是直接下载一个补丁包,通过补丁来替换一些出现bug的类, 当然下载补丁的过程用户一般是感觉不到的,表面上看是直接修复了bug.原理类似与插件开发,关于插件开发原理,看这篇Android插件原理剖析,其中介绍了一下java中的类加载器和android中的类

2016-01-25 01:05:05 1705

原创 React-Native 鬼畜表情包app

QQ群,微信群,各种大神,各种表情,每到半夜,斗图大会,八仙过海,各显神通,良辰日天齐上阵。不服,下载鬼畜表情,参加到战斗中,无奈啊,app做的不是太方便,想起抓包把图片一下都下载下来,想起最近看到RN,正好练练手。 单文件批量抓取/** * Sample React Native App * https://github.com/hanks-zyh/233333 */'use stric

2016-01-25 01:03:38 2061

原创 Framework分析-Application的onCreate

ActivityThread并不是一个Thread,而是一个单纯的Java类,查看一下 ActivityThread 的源码final class ActivityThread,并没有继承Thread或者实现Runnable接口,ActivityThread 其中包含 main 方法,程序的入口地方,怎么看出来的呢? 我们开发过程中总会出现程序异常信息,细心看一下log,查看最下面的几行,最终问题出

2016-01-25 01:02:13 758

原创 Android性能优化

布局优化,绘制优化,内存泄露优化,响应速度优化,listview优化,bitmap优化,多线程优化 Traceview,Systrace,Oprofile,Heap Viewer,Memory Monitor,Allocation Tracker 量化流畅度布局优化 include 重用布局 merge 减少层级嵌套 viewstub 延迟加载 space 空白占位绘制优化

2016-01-25 01:00:32 660

翻译 Android 下雪动画

原文链接 : Snowfall 原文作者 : Styling Android 译文出自 : hanks.xyz 译者 : hanks-zyh 校对者: desmond1121 状态 : 完成 这本是一个愉快的季节,但是,呵呵,胡扯! 因为这篇文章的发表时间是2015年的圣诞节,所以我们需要给Style Android用制造出一些节日气氛。感谢读者们,因为有的读者可能没有在

2015-12-30 18:22:04 1540

原创 React-Native 知乎日报首页

主要练习从服务器获取数据,然后展示到界面,最外层用ScrollView包裹起来顶部是一个ViewPager,api使用的知乎日报的api,在这里只使用了一个主题日报列表查看的api,获取到json数据之后,显示到ListView中.最终效果如下:获取网络数据根据前面的文章React-Native 网络请求使用fetch方法来获取_getData:function(){ var datas = [

2015-12-30 18:21:30 1568

原创 React-Native 组件练习-购物app侧滑菜单

参照官方例子练习组件的使用,练习View Image Text 还有Android平台的DrawerLayoutAndroid 效果图: React-Native 中的 width,height的 100%在React-Native 中没有百分比这样的宽高,但是有替代的,具体见 issue flex:1 相当于 height:100% alignSelf:'stretch' 相当于 wid

2015-12-26 14:19:49 3479 2

原创 React-Native中的布局

title: React-Native中的布局 date: 2015-12-21 15:11:14 tags:- React-NativeReact-Native 使用 FlexBox布局来放置元素 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为Flex布局。FlexboxalignItems enum('fle

2015-12-26 14:18:26 660

原创 运行React-Native例子UIExplorer

运行 FaceBook 给出的例子UIExplorer, 由于网络问题折腾了半天, 在公司网络死活不行,到家一小会儿搞定. 原因是我使用 npm install 的时候 直接 ctrl+c 断掉了, 需要把目录下的node_modules文件夹删除再重新安装.关于NPMNPM小结react-native 环境参考前面:Ubuntu进行 react-native 的开发APK运行到模拟器git clo

2015-12-26 14:16:52 2376

原创 Ubuntu进行 React-Native 的开发

尝试在 Ubuntu 14.04 上面进行 react-native 的开发, 安装官方文档进行配置,记录配置流程安装 node.js在官网下载源码安装即可, 安装后查看版本$ node -v安装 watchman文档安装依赖$ sudo apt-get install autoconf automake python-dev 安装 watchman, 如果出错, 查看安装依赖的详细文档$ gi

2015-12-26 14:15:25 1657

原创 Rx中的线程切换

初学者在使用RxJava的过程中,经常搞不清Observable的事件序列和每次操作应该怎样切换线程,切换哪个线程 首先需要搞懂在RxJava 中.subscribeOn() 和 observeOn() 之间的区别: - .subscribeOn() 用来指定Observable应该操作的调度器(Scheduler) - .observeOn() 指定 Observable在一个指定的调度器

2015-12-26 14:13:28 1021

原创 使用RxJava 提升用户体验

使用RxJava 提升用户体验 原文链接:https://medium.com/@diolor/improving-ux-with-rxjava-4440a13b157f#.qdhu122d1 翻译: hanks“网络永连接,服务器不出错,培根没肥肉”友好的用户体验通常是用户很爽,但开发者很痛苦。 当用户点击一个按钮后,因为后端没有及时响应而卡住界面,这回让用户很失望。 现在让我们创建

2015-11-29 23:39:15 1236

原创 adb 无线调试

adb 无线调试 通过wifi链接adb, 也是插件 AndroidWiFiADB 的原理 前提: 电脑和手机在同一局域网下adb connect 命令adb connect <host>[:<port>]通过USB线连接电脑查看 adb 连接的设备列表$ adb devices -lList of devices attached005deabe1919a90b

2015-11-18 17:26:01 798

转载 解析 dex 文件结构 - DexHeader

原文: http://kiya-z.github.io/2015/11/17/parse-dex-file-part-dex-header/解析 dex 文件结构 - DexHeader发表于 2015-11-17   |   分类于 Android   |   暂无评论   |   6  Hits简介dex 文件是 dalvik 虚拟机的可

2015-11-18 11:02:17 2660

转载 如何运行 .smali 程序

原文: http://kiya-z.github.io/2015/11/16/how-to-run-file-ended-with-smali/如何运行 .smali 程序发表于 2015-11-16   |   分类于 Android   |   暂无评论   |   3  Hits准备 smali 程序从 《Andro

2015-11-17 11:53:37 1574

转载 校验数字签名防止 apk 被二次打包 - Java层校验(大众点评为例)

原文链接:  http://kiya-z.github.io/2015/11/12/check-signature-for-avoiding-fake-app-java-level-check/测试环境Ubuntu 14.04Lenovo Android 5.1Lenovo Android 4.2.2Android Studio普及签名包名知识包名 (Pac

2015-11-17 11:51:34 2747

原创 上传自己的库到jcenter

# 注册 [https://bintray.com/](https://bintray.com/)注册一个账号。获取API Key[https://bintray.com/profile/edit](https://bintray.com/profile/edit) # 创建与配置项目1. 修改项目目录下的 `build.gradle`,添加依赖```// Top-level build fi

2015-10-31 20:24:14 932

PixateViewsDemo.zip

让我们使用css的形式来控制Android的控件的样式,支持的控件有 1. View (generic attributes support for all views) 2. ImageView 3. TextView 4. CheckedTextView 5. Button 6. CompoundButton 7. ImageButton 8. ToggleButton 9. RadioButton 10. CheckBox 11. Spinner 12. ListView 13. GridView 14. EditText (support a non-editing mode) 15. ActionBar (not in the View's hierarchy, but almost completely supported)

2015-03-22

pixate.jar

让我们使用css的形式来控制Android的控件的样式,支持的控件有View (generic attributes support for all views) ImageView TextView CheckedTextView Button CompoundButton ImageButton ToggleButton RadioButton CheckBox Spinner ListView GridView EditText (support a non-editing mode) ActionBar (not in the View's hierarchy, but almost completely supported)

2015-03-22

百度地图定位Demo

利用百度地图SDK写的一个定位Demo,主要展示代码风格,逻辑的封装

2015-02-21

仿微信选择图片拍照

仿微信选择图片拍照

2015-02-17

asmack-jse-buddycloud-2010.12.11.jar

asmack-jse-buddycloud-2010.12.11.jar

2015-02-05

appcompat_v7

2015 Android最新的v7,v4包,包含最新更新控件

2015-01-30

程序设计题目

oj系统练习题目 南阳oj 系统 郑州你大学 四川大学 开封大学

2013-10-29

HDU 专题分类(2013年8月)

在webDIY 和DIY中总结的专题训练

2013-08-07

空空如也

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

TA关注的人

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