自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 harmonyOS鸿蒙-UI-自定义弹窗

上面代码中dialogController就是弹窗控制器,即CustomDialogController对象,该对象构造方法接收一个对象参数,其中builder对应值就是自定义的弹窗组件,需要@CustomDialog标注,alignment定义弹窗的位置,此处弹窗展示在底部,offset是弹窗相对于当前位置的偏移量,此处相对于底部再向上偏移24,效果如下。1、使用@CustomDialog装饰器装饰自定义弹窗,此装饰器内进行自定义内容(也就是弹框内容)2、创建构造器,与装饰器关联。

2023-07-02 22:33:32 1352

原创 harmonyOS鸿蒙-数据管理-用户首选项(@ohos.data.preferences)

用户首选项为应用提供key-value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串,值得存储数据类型包括数字型、字符型、布尔型以及3种类型的数组类型。

2023-07-02 21:57:41 2071 1

原创 HarmonyOS-页面和自定义组件生命周期

1、自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI复用2、页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才能调用页面的生命周期1、aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行2、aboutToDisappear:在自定义组件即将销毁时执行。

2023-07-02 17:05:35 1029

原创 鸿蒙-关系型数据库(@ohos.data.relationalStore)

update函数需要传入两个参数,第一个是需要更新的列值,是一个对象,key为列名,value是对应的值,第二个参数是一个条件对象,上面代码表示更新userInfo表中name='lisi'的age更新为66。batchInsert函数第一个参数是表名称,第二个参数是一个ValuesBucket数组对象,ValuesBucket表示key-value的对象,key表示表的列名称,value是对应的值。2、RdbPredicates 用来定义数据库的操作条件,可用于查询,修改,删除的条件语句。

2023-07-02 16:35:47 3062 2

原创 HiLog日志打印

业务调用日志打印公共类,因为我们公共日志类参数是一个可变数组,我们可以把第一个参数作为业务类型的TAG,比如下面的"EntryAbility",第二个参数传入要具体打印的日志,如下。4、用DevEco Studio查看日志。

2023-07-02 10:16:08 422

原创 Optional取代null

如果给定一个Person对象,想要获取对应保险公司的名称,那么为了防止空指针异常的出现,我们往往会这么获取,每次引用一个变量都会做一次null检查、if嵌套层数多,代码膨胀。在项目中我们经常遇到空指针异常,为了防止该异常发生,我们往往需要加一大堆的判断,来防止对象是null的场景。(1)Optional.ofNullable():创建一个可接受null的Optional对象。(3)orElse():当Optional对象中存储的值不存在时,返回一个默认值。为了防止空指针异常,我们往往会这么写。

2023-05-07 09:04:18 95

原创 Android之服务service

新建一个类,并继承Service类,并实现类的方法onCreate、onStartCommand、onDestory,者三个方法是最常用的,其中onCreate方法会在服务创建时调用,onStartCommand方法会在每次服务启动时调用。通常,如果希望服务一起动就去执行某个动作,可以把逻辑写在onStartCommand中。另外每个服务都需要在AndroidManifest.xml中注册才能生效。

2023-04-23 07:02:58 807

原创 Android 内容提供器

比如某个程序的包名是com.test.app,那么程序对应的authority可以命名为com.test.app.provider。那么以路径结尾的MIME类型可以写成vnd.android.cursor.dir/vnd.com.test.app.provider.table1,以id结尾的MIME类型可以写为:vnd.android.cursor.item/vnd.com.test.app.provider.table1。分别是从内容提供器中查询,新增,更新,删除数据。以读取联系人为例,步骤如下。

2023-04-20 07:15:45 92

原创 Android 持久化操作

(1)通过Context.getSharedPreferences获取SharedPreferences对象,第一个参数是文件名,如果文件不存在,则会创建文件,第二个参数是操作模式,目前只有MODE_PRIVATE一种模式可选,表示只有当前app才能对这个文件进行读写。(1)调用update方法,第一个参数是表名称,第二是ContentValues对象,第三个是where条件,第四个是where条件的参数,第三第四个参数不指定的话是更新所有。(4)调用Editor.apply方法提交键值对,存入文件中。

2023-04-13 06:50:59 106

原创 Android广播机制

Android、安卓、广播

2023-04-09 11:39:58 252

原创 Fragment基本用法

Fragment基本用法

2022-12-04 16:59:01 126

原创 RecyclerView基本用法

Android中RecyclerView的基本用法

2022-12-04 11:43:39 124

原创 自定义公共组件ListView

Android自定义ListView公共组件,调用方只需关注ListView的数据无需关注UI渲染

2022-12-04 10:51:04 357

原创 AsyncTask异步编程

Android

2022-11-13 16:37:53 86

原创 CompletableFuture的使用

CompletableFuture多线程

2022-07-31 15:43:21 146

原创 class.getResourceAsStream获取不到resources路径下的文件

1、现象,如下图,获取xml文件为空2、解决方案: 在Porject Sturcture->Modules中将resources文件夹设置为Resources目录,如下图

2022-02-25 08:01:04 5608

原创 重构改善既有代码设计总结之代码坏味道

一、代码坏味道1、神秘命名意义:使函数、模块、变量和类,能清晰的表明自己的功能和用法(如果想不出一个好名字,说明背后可能潜藏着更深的设计问题)常用重构手法:(1)改变函数声明(124)(2)变量改名(137)(3)字段改名(244)2、重复代码意义:如果要修改重复代码,你必须找出所有的副本来修改,如果在一个以上的地点看到相同代码结构,设法将它们合而为一常用重构手法:(1)“同一个类的两个函数含有相同表达式”可以提炼函数(106)提炼出重复代码(2)如果

2022-02-18 07:22:18 687

原创 重构改善既有代码设计总结之重构手法

106、提炼函数要点:(1)将意图和实现分开:如果需要花时间浏览一段代码才能弄清它到底在干什么,就该提炼到一个函数中,并根据期用途来命名(大多数时候根本不需要关心函数如何达成其意图,这是函数体内干的事)(2)一个大函数中,一段代码上放着一句注释,此时可以将代码提炼到自己函数中,注释往往提示一个好名字115、内联函数要点:(1)手上有一群组织不合理的函数,可以将它们内联到一个大函数中,再以合理的方式重新提炼小函数(2)间接性可能带来帮助,但非必要的间接性总是让人晕头转向,如果系

2022-02-18 07:20:24 280

原创 JS基础-变量类型和计算

一、思考:(1)typeof能判断哪些类型(2)何时使用===何时使用==(3)值类型和引用类型区别(4)如何实现深拷贝二、知识点:1、变量类型(1)值类型与引用类型深入分析:值类型:引用类型:常见值类型:常见引用类型(2)typeof运算符识别所有值类型识别函数判断是否是引用类型(不可再细分)(3)深拷贝const obj1 = { age: 20, ...

2022-02-13 11:49:34 426

原创 Optional取代null

2021-05-10 00:22:17 61

原创 代码整洁之道总结

1、整洁的代码力求集中。每个函数、每个类和每个模块都全神关注于一事,完全不受四周细节的干扰和污染。2、不要重复代码,只做一件事,表达力,小规模抽象一、有意义的命名1、命名需要名副其实,一旦发现有更好的名称,就换掉旧的。如果名称需要注释来补充,那就不算名副其实2、以数字系列命名(a1、a2…aN)是依义命名的对立面,名称纯属误导,完全没有提供正确信息3、使用可搜索的名称,便于在项目中快速找到对应变量4、避免使用缩写,如接口的命名以I开头,可以直接把I去掉5、类名不应当是动词6、方法命名应当是动

2020-12-20 15:54:40 897

原创 Ract基础之恰当的获取数据二

1、创建一个组件来从服务端获取数据,并展示,如下import React from 'react'class Gists extends React.Component{ constructor(props) { super(props); this.state = { gists:[] } } componentDidMount() { console.log('向服务端发起请求获取数据,

2020-12-13 17:12:12 461

原创 Ract基础之恰当的获取数据一

1、创建一个简单的组件,点击增加按钮计数器加1,点击减法按钮,计数器减一,如下import React from 'react'export default class Counter extends React.Component{ constructor(props) { super(props); this.state = { counter: 0 } } handleDecrement = () =

2020-12-13 16:23:47 955

原创 React基础之函数子组件

1、概念:不按组件的形式传递子组件,而是定义一个可以从父组件接收参数的函数import React from 'react'export const Name = ({children}) => children("world")Name组件中拥有定义为函数的children属性,并且没有按JSX表达式使用,而是作为函数被调用上述组件的用法如下:ReactDOM.render( <Name> {name => <div>Hello,

2020-12-13 11:11:49 1082

原创 React基础之高阶组件

1、高阶组件其实就是函数,它接收组件作为参数,对组件进行增强后返回const Hoc = Component => EnhancedComponet2、举例:如果要为每个组件添加相同的className。可以编写一个高阶组件const withClassName = Component => props => (<Component {...props} className="my-class"/>)3、举例:为每个组件添加事件监听window的窗口宽度变化,可以编

2020-12-13 10:11:02 100

原创 React开发可复用组件

1、prop类型(1)如果希望整个引用可以复用组件,关键要确保清晰的定义组件及其参数,以便能够直观使用。React提供了一个非常简单的表达组件接口的强大工具,只要提供组件期望接收的prop名称与对应的验证规则即可。import React from 'react';import PropTypes from 'prop-types';export default function Button({text}){ return <button>{text}</button

2020-12-12 22:54:11 254

原创 React基础总结

1、React工作方式state—》视图—》修改state—》newState----》新视图只要对state进行修改,React就会重新渲染视图,大量的DOM操作不会对页面性能有影响,React采用了一种虚拟DOM的核心技术,每一个组件都会生成一个虚拟DOM树,它是以纯对象的方式进行描述的,React会根据虚拟DOM来生成真实的DOM,组件中的数据变化会生成一个新的虚拟DOM,React会对比新旧的虚拟DOM,找出变化点,然后针对变化的节点进行重新渲染,极大提高了重新渲染的性能。2、React两个核

2020-11-08 10:57:03 89

空空如也

空空如也

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

TA关注的人

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