哪个小可爱在偷偷的看我~~
偷瞄.gif
背景
Android 转 鸿蒙开发,在实践中总结的一些经验,特此共享一下,文章持续更新中...
一、Uri.parse
kotlin --> Uri.parse("http://www.baidu.com").buildUpon()
arkTs -->
import url from '@ohos.url';
url.URL.parseURL("http://www.baidu.com")
二、list集合转成字符串 a,b,c,d...
kotlin --> ids.reduce { acc, a -> "$acc,$a" }
arkTs -->
方法1
ids.reduce((a, b) => a + "," + b)
方法2
export function addStr(ids: string[]): string {
let str = ""
ids.forEach((value) => {
str += "," + value
});
if (str.startsWith(",")) {
str.substring(1, str.length)
}
return str
}
三、静态常量
kotlin -->
object Test {
var APPID: String = ""
}
arkTs -->
export class Test {
static readonly APPID: String = ""
}
四、log打印
arkTs -->
import hilog from '@ohos.hilog';
export class Logger {
static PREFIX: string = 'test';
static DOMAIN: number = 0xFF00;
static FORMAT: string = '%{public}s';
static debug(...args: string[]): void {
hilog.debug(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args);
}
static info(...args: string[]): void {
hilog.info(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args);
}
static warn(...args: string[]): void {
hilog.warn(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args);
}
static error(...args: string[]): void {
hilog.error(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args);
}
}
五、实体类打印内容
kotlin -->
data class Test {
var APPID: String = ""
}
arkTs -->
JSON.stringify(new Test())
六、实体类包含子集合实体类
kotlin -->
class M1cctvAdInfo {
val sdks: List<SDKEvent> = arrayListOf()
}
class AdEvent {
}
arkTs -->
export class McctvAdInfo {
sdks: SDKEvent[] = []
}
export class SDKEvent {
}
七、重载
同样的一个方法, 一个是无参,一个是传参数
注意:arkTs是需要申明复合类型,也可以只定义成复合类型,如果类型多了,复合类型增加即可
arkTs -->
load(request?: AdRequest): void {
}
kotlin -->
fun loadAd() {
}
fun loadAd(request: AdRequest) {
}
八、接口回掉
注意:loadTest方法中,如果入参string为空,接口和入参不可互换位置,因为如果string在前,但是入参string为空,为空后下一个不为空会前移,导致入参数量和位置无法匹配,所以报错
arkTs -->
export interface OnTestListener {
onTest: (id: string) => void
}
export function loadTest(listener: OnTestListener, key1: String, ke2: String) {
listener.onTest("test")
}
export function clickTest() {
loadTest({
onTest(id: string) {
}
}, "key1", "key2")
}
kotlin -->
interface OnTestListener {
fun onTest(id: String)
}
fun loadTest(listener: OnTestListener, key1: String, ke2: String) {
listener.onTest("test")
}
fun clickTest() {
loadTest(object : OnTestListener {
override fun onTest(id: String) {
}
}, "key1", "key2")
}
八、随机数生成
arkTs -->
roundNumber(startValue: number, endValue: number): number {
let num = Math.random() * (endValue - startValue + 1) + startValue
return Number.parseInt(num.toString());
}
kotlin -->
Random.nextInt(count)