分类 安卓 下的文章
将谷歌商店证书转成FB要的KEY
set exe="C:\Program Files\Java\jre1.8.0_231\bin\keytool.exe"
set openssl="C:\Program Files\OpenSSL-Win64\bin\openssl.exe"
set file_name=google_play.der
set password=android
%openssl% sha1 -binary %file_name%| %openssl% base64
pause
下面是将本地证书转:
set exe="C:\Program Files\Java\jre1.8.0_231\bin\keytool.exe"
set openssl="C:\Program Files\OpenSSL-Win64\bin\openssl.exe"
set file_name=key.jks
set password=111111111
%exe% -exportcert -alias username -keystore %file_name% -storepass %password%| %openssl% sha1 -binary | %openssl% base64
pause
安卓走马灯(View)
主要用:HorizontalScrollView 实现,然后里面放一个LinearLayout 就可以。
为什么用HorizontalScrollView ,如果用其它View窗口。LinearLayout 显示区以外的可能不显示
再使用动画类实现移动跟循环。喜欢封装的可以自己继续然后再用循环做
for (item in logs) {
createItem(item)
}
createItem(logs[0])
MainScope().launch(Dispatchers.Main) {
delay(100)
loop2()
}
}
private fun loop2(){
val width = xxxLine.measuredWidth
// 第一个多创一下。用于做动画
var w1 = xxxLine[0].measuredWidth
val w2 = xxxLine.measuredWidth
var dx = width - w1 + (w2 - w1).coerceAtMost(0)
val anim = ObjectAnimator.ofFloat(xxxLine, "translationX", 0.0f, -dx.toFloat())
anim.duration = width * 10L
anim.interpolator = LinearInterpolator() // 匀速
anim.repeatCount = ValueAnimator.INFINITE // 循环
anim.start()
}
禁掉HorizontalScrollView 的事件和android:scrollbarSize="0dp"就可能完美显示
hsXXX.setOnTouchListener { _, _ -> return@setOnTouchListener true }
lateinit 怎么判断变量是否已经初始化
lateinit property xxx has not been initialized
val lateinit var test:XXXX
if(test != null) // 这样是会报错的
要
if(::test.isInitialized) // 这样才正确
打开 isCheckReleaseBuilds = true 编译不过
app\build\intermediates\lint_vital_partial_results\XXXRelease\out
里有个XMl,将里面提到的到修改掉就好。通常都是XML引用一个不存的变量