- 博客(14)
- 收藏
- 关注
原创 Flutter学习笔记
1、添加环境变量: export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 2、Dart语言简单学习: 1.变量的声明 var:会根据第一次赋值判断数据类型,编译结束后变量的类型已经确定 dynamic:声明的变量可以在后期改变赋值类型,会提供所有可能的组合 Object:任何对象都可以赋值给Object对象,但是只能使用O..
2020-07-22 22:56:02
364
原创 Kotlin协程的学习笔记
1、什么是协程: 协程的理解和线程有点类似,可以简单的理解为轻量级的线程。线程需要依靠操作系统的调度才能实现不同线程之间的转换,而协程却可以的编程语言的层面实现不同协程之间的转换。协程允许我们在单线程模式下模拟多线程的编程效果,代码的挂起和恢复都是由编程语言自行控制。 developers: 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念。 2、功能:(来自developers) 与
2020-07-11 17:24:02
569
原创 Java泛型探索
1.关于泛型擦除 public class ErasedType { public static void main(String[] args) { Class c1 = new ArrayList<Integer>().getClass(); Class c2 = new ArrayList<String>().getClass(); System.out.println(c1 == c2); } } 上面代码
2020-06-28 22:59:29
162
原创 AS上传Library到JCenter
1.使用AS新创建一个项目 2.右键点击项目名add moudle 选择Android library 3.完成librariy部分代码的编写 4.https://bintray.com/官网注册个人用户账号 5.添加Repository Name 和Description根据自己情况填写 6.之后进入自己的Repository添加package 注意package name稍后会用到 7.完成上面的操作之后回到AS 在library的build.gradle中添
2020-06-26 16:02:45
221
原创 Jetpack的学习
一、ViewModel ViewModel的一个重要作用就是帮助Activity分担一部分的工作,专门存放关于界面相关的数据。只要界面上能看到的数据,都应该存放到ViewModel中。另外一个很重要的特性就是当手机屏幕发生旋转时不会被重新创建,只有当acitivity被退出是跟着一起销毁。 1.基本用法 一般每一个Activity和Fragment都会创建一个对应的ViewModel。 下面是一个简单的计数器的例子: 1.导包: implementation 'androidx.lifecycl
2020-06-15 14:56:37
353
原创 Android自定义组件(五)
1.组件的属性 自定义的组件继承自View后就会具备若干的默认属性。 除了View 的默认属性之外、我们也可以为组件自定义属性,自定义属性应遵循以下步骤: 1)在 res/values/attrs.xml 文件中为指定组件定义 declare-styleable 标记, 并将所有的属性 都定义在该标记中;(若没有,自行创建) 2)在 layout 文件中使用自定义属性; 3)在组件类的构造...
2018-10-14 18:57:35
1624
原创 Android自定义组件(四)
1.阴影 阴影即可以为文字和图形指定阴影,默认情况下,我们的文字和图形都是绘制在主层(main layer)上,我们也可以将内容绘制到新的layer上,实际上阴影就是在main layer的下面添加了一个阴影层。 Paint类为此定义了一个名为setShadowLayer的方法: public void setShadowLayer(float radius, float dx, floa...
2018-10-14 15:24:16
166
原创 Android自定义组件(三)
1.聊一聊双缓存技术 为什么叫“双缓存”,其实就是有两个绘图区,一个是Bitmap的Canvas,另一个则是当前View的Canvas。 使用双缓存的意义: 1)提高绘图的性能 2)可以在屏幕上展示绘图的过程 3)保存绘图历史 (1)下面是使用双缓存来绘制图形的代码 private Paint paint; /** * 上一个点的坐标 */ ...
2018-10-13 16:17:57
143
原创 Android自定义组件(二)
1.使用Graphics2D实现动态效果 (1)invalidate()方法用于重绘组件: public void invalidate() public void invalidate(int l, int t, int r, int b) public void invalidate(Rect dirty) 其中,不带参数表示重绘整个区域,带参数表示重绘指定的区域。简单来讲,View的i...
2018-10-13 11:28:39
385
原创 Android自定义组件(一)
1.Activity 的组成结构 Activity代表一个窗口,其本质上是一个PhoneWindow对象,其负责窗口的管理,其负责的DecorView负责界面的效果。DecorView类是FrameLayout的子类,是整个View的根。各组件之间的关系如下图所示: (1)Activity负责整个容器的生命周期以及活动,窗口通过window来管理 (2)窗口的绘制以及渲染交给DecorV...
2018-10-12 15:37:51
544
原创 Android 新建工程上传代码报错
1.Can't Update No tracked branch configured for branch master or the branch doesn't exist. To make your branch track a remote branch call, for example, git branch -...
2018-07-19 16:24:35
195
原创 Activity和Fragment的生命周期
1.活动的生命周期 Android类中定义了七个回调方法分别是: 1. onCreate( ) 活动第一次创建时调用,在这个方法中进行初始化操作。 2. onStart( ) 这个实在活动又不可见到可见的时候调用。 3. onResume( ) 在活动准备好和用户交互的时候调用,此时活动已经位于返回栈的顶端,并且处于运行状态。 4. onPause( ) 系统准备去启动另一个或者恢复另一...
2018-06-13 21:37:40
1160
转载 【转】ListView中的BaseAdapter
本文转自:http://blog.youkuaiyun.com/tianshuguang/article/details/7344315 重写ListVIew的BaseAdapter需要重写一下四个方法: getCount()、getItem(int position)、getItemId(int position)以及getView(),其中最重要的是getView()方法。 @Overrid...
2018-06-13 20:59:37
187
原创 Service学习笔记
1.生命周期 四个手动调用的方法 手动调用的方法 作用 startService( ) 启动服务 stopService( ) 关闭服务 bindService( ) 绑定服务 unbindService( ) 解绑服务 五个内部自动调用的方法 内部自动调用的方法 作用 onCreat( ) 创建服务 onSt...
2018-06-12 21:17:05
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人