1:在相对布局中设置了固定宽高,如果又设置了在两个控件之间(toLeftOf,toRightOf),这个固定宽高就没用了
2:activity的style中可以设置其他控件的默认样式,比如dialog
3:使用AlarmManager时,使用set方法,第二个参数time跟第一个参数关系很大,第一个为相对时间的话,就需要把alarmmanager启动时间取出来加上需要延迟的时间然后传入time中
4:接入FaceBook,需要一个获取keystore的编号Hash(SHA1),文档里都有代码,windows需要安装一个东西https://code.google.com/p/openssl-for-windows/(记一下,自己qq微云里面下载了一个),下载下来运行bin目录里面的exe,然后自己去dos里面敲文档里面给出的命令就行
5:使用Retrofit ,发现实体类使用泛型会报错 {Java.lang.IllegalArgumentException: Unable to create converter for class ...},是因为没有添加addConverterFactory(GsonConverterFactory.create())在Retrofit上,大约这样
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://apis.baidu.com/acman/zhaiyanapi/tcrand/")
.addConverterFactory(GsonConverterFactory.create())
.build();
6:使用阿里云推送,阿里支付,阿里登录等功能时,他们都会引用一个叫utdid的工具包,如果同时使用几个阿里包,会出现引用utdid包冲突,解决办法就是将其中的一些包给设置成私有的,比如:compileOnly files ('libs/alipaySdk-15.6.2-20190416165036.aar'),具体为啥,没有去研究过
7:android studio依赖jar始终失败,已经将jar放入libs中,并且gradle也已经添加依赖(sourceSets或implementation),但是怎么都无法使用,可以查看一下jar包的大小,有可能在复制过程中出现异常,jar包的大小变为了0kb,所以就不能依赖,将包重新复制一下再检查检查就好了
8:android studio Setting->Editor->Live Templates可以设置默认代码,只需要输入简单字母,就可以提示整个设置的代码
9:android 10 创建文件失败,已经赋予权限,也没有多层文件创建,但是就是创建失败,读取文件列表也失败,只需要在AndroidManifest的Application中加一句代码:android:requestLegacyExternalStorage="true"就可以了,原因没有查询,反正先这么用着! 补:20200323,找到原因:在Android 10上即使你拥有了储存空间的读写权限,也无法保证可以正常的进行文件的读写操作,所以需要适配,而最简单粗暴的就是现在这个,请求使用旧的存储模式,但是在android 11的时候,这种适配会被去掉,所以还是要想办法适配
10:支付宝分享功能,设置的签名是通过keystoll获取的MD5去掉冒号所得,还需要用小写,不能用keytool获取的全大写MD5,要小写
11:阿里百川的客服OpenIm已经下架,不能再使用,引用进来运行会报AndroidManifest错误
12:还是facebook的坑,如果调用facebook登录,提示{登录出错 将你登入到此应用程序时出错。请稍后再试}基本上就是说明你的hashcode错了,最好用代码去获取,不用命令,代码获取的就没有问题,就能用,命令的要装东西运行才行
13:App在AS上运行第一次没有任何问题,后面从桌面上点击打开App后就直接跳转到APP的设置详情去了,是因为在AndroidManifests里面配置了
<data android:scheme="smarthomeapp" android:host="smarthome.app" android:pathPrefix="/parameter"/>
14:java,kotlin中设置颜色的时候,使用ContextCompat.getColor(context,R.color.white)比较好,总是容易忘记这个方法
15:查询app启动时间,命令:adb shell am start -W 包名/启动的activity的完整路径 比如:adb shell am start -W com.xxx.xxx/com.xxx.xxx.activity
16:给app添加运行内存,放置OOM,只需要在application 里面加一句android:largeHeap="true"就行了,但是不建议这么做,虽然加大了内存,但是根本问题还是没有解决,其他需要大内存的app,比如视频,图片类app可以加一个这个,普通的app还是老老实实的解决内存泄露比较好
17:TabLayout隐藏下划线
app:tabIndicatorColor="@null"
18:recyclerview 去掉缓冲动画,就是滑动到尽头的动画
android:overScrollMode="never"
java代码中
recyclerview.setOverScrollMode(View.OVER_SCROLL_NEVER);
19:字符串颜色转color
Color.parseColor("#fffafafa")
20:使用firebase接入google登录,除了配置相应的数据外,还需要去验证那儿添加打开登录功能
21:BottomSheetDialog展示,在横屏模式下,默认是只展示一半的,所以可以手动设置一下,成为完全展开,代码如下:
val dialog = BottomSheetDialog(context , R.style.BottomSheetDialog)
val bindingSheet = DataBindingUtil.inflate<T>(context.layoutInflater!! , layoutId , null , false)
binding?.invoke(bindingSheet)
dialog.setContentView(bindingSheet.root)
val bottomSheet = dialog.findViewById<View>(R.id.design_bottom_sheet) as FrameLayout
val behavior = BottomSheetBehavior.from(bottomSheet)
behavior.state= BottomSheetBehavior.STATE_EXPANDED//默认就打开了
behavior.isHideable= true//需要加一句这个,免得崩溃
behavior.skipCollapsed= true//设置下滑直接就关闭,不切换到半关闭状态
behavior.peekHeight= 0
22:webview不让长按复制,又想要网页里面的输入框长按粘贴,怎么办呢,找到一个小方法
WebView.setOnLongClickListener {//让不让长按复制
when (bWebView.hitTestResult.type) {
WebView.HitTestResult.EDIT_TEXT_TYPE-> false
else ->true
}
}
这儿是webview的长按反馈,里面判断一下如果是长按的输入框,就返回false,其他任何情况都返回true,因为返回true就表示不让长按
23:android studio自带的模拟器无法联网怎么办,参考一个链接
其实操作也算简单:
1->cmd进入到自己sdk/emulator文件夹下
2->执行emulator -avd @{YourEmulator} -dns-server 8.8.8.8,这个YourEmulator就是模拟器名称,一般在c/user/applicationname/.android/avd/里面,注意名字是没有.avd的,就是,avd前面那节
3->执行了后,就自动启动了模拟器,试试能不能联网了
但是一个贼jb大的问题就是,这种居然是只能一次有效,重启就又没了,你能想象嘛,还特么有这种设定
24:BottomSheetDialog里面有recyclerview,发现滑动冲突了,啷个办,我也不晓得,只晓得一个BottomSheetDialog就一个recyclerview不会冲突,或者多个recyclerview都在一个父布局里面也不会冲突,原因不知道,懒得去了解
25:如果遇到viewmodel里面编译出错,提示类似与这种modelMainInfo = model.getMainInfo();估计就是你的viewmodel里面有一个maininfo参数,然后自己又写了一个getMainInfo方法,这个方法最好改个名字,因为编译的时候,会自动生成一个getMaininfo方法来获取maininfo,你就别在写get什么什么的方法了,危险,半天都没想起这个问题,造孽