1 、 radiobutton的属性的回顾
1、系统默认的button按钮样式不想使用时可以使用radiobutton的 button属性更改按钮图片,一般我们给他一个selector设置checked与unchecked状态图片
2、radiobutton的paddingXXX 设置字体和按钮图片之间的距离
2、editText内容位置设置(padding 啊 )
editText中gravity只能设置固定位置(左中右),设置指定位置就用padding (容易忘记啊尴尬)
3、textview加载数码字体
Textview 加载Assets下的ttf文件即可
Typeface typeface = Typeface.createFromAsset(getAssets(),"xxx.TTF");
// 设置字体类型
timeTextView.getPaint().setTypeface(typeface);
4、textview setText()内容为 int类型数值时报错
源码分析:
@android.view.RemotableViewMethod
public final void setText(@StringRes int resid) {
setText(getContext().getResources().getText(resid));
mTextSetFromXmlOrResourceId = true;
mTextId = resid;
}
可以看出要@StringRes类型的值
解决方式:
- 方式一: +“”即可 转换为String类型
- 方式二:使用String.valueOf()作为参数(如下)
5、String字符串内容可能为“10”int类型数据 、“1.2”long类型数据。我们把它们转化为数字时可以使用Double.parseDouble(“xxx”)来解析
String s = "xxx"; // xxx 为数字字符串,但是不确定内容是 int 还是long
Double.parseDouble(s);
6、gradle 中app 版本动态替换:
我们平时写demo安装app时他的版本号如下
如下默认是versionName 的1.0,有时我们会在后面加上 versionCode的值比如1.0.1,如果下次app要版本升级,我们需要修改app的versioncode为2 ,versionName为1.0.2好麻烦的 这时我们就可以写gradle 语句动态替换(如下)
apply plugin: 'com.android.application'
//返回具体的 月天
def releaseDate() {
return new Date().format("MMdd", TimeZone.getTimeZone("UTC+8"))
}
// 返回具体的 年月日-小时分钟
def releaseTime() {
return new Date().format("yyyyMMdd-HHmm", TimeZone.getTimeZone("GMT+8"))
}
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.administrator.studydemo"
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0.${versionCode}.${releaseTime()}"// 在这里使用
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
参考:GMT与UTC简介
7、签名打包的release包的文件名字动态替换
我们平时签名打包的apk 默认名字就是 releasexxx.apk 当然我们也可以在gradle中配置打包后的app名字,这样我们就不用手动修改了。
如下在 build.gradle的android{}下添加:
applicationVariants.all { variant ->
if (variant.buildType.name.equals('release')) {
variant.outputs.all { output ->
def buildName = "Fake Location Maker"// 这里就是apk的名字
def type = variant.buildType.name
def releaseApkName = buildName + '-' + type + "-" + versionName + '.apk'
outputFileName = releaseApkName
}
}
}
//ps:我们修改apk的名字只需要修改buildName就行了
效果:
8、Random随机数的范围
随机数范围回顾[0,n) 注意包括左面不包括右面。
9、Android studio修改工程名
1、安卓studio关闭要修改的项目
2、文件夹重命名
3、open 重命名的工程(不要open recent)
或者参考这里操作也行
10、app 签名打包失败:Lint found fatal errors while assembling a release target.
解决:这个错误报告会生成在 [app module]/build/reports/lint-results-yourBuildName-fatal.html 打开这个网页,可以看到详细的错误信息。
11、release打包失败问题 The destination folder does not exist or is not writeable
原因:路径错误。一般是你copy别人的项目在自己的电脑运行,而这个路径是别人电脑的路径,你检测下此处这个项目目app的路径是否是你自己电脑上的。(下图红框为错误原因)
12、Manifest merger failed with multiple errors, see logs问题处理
解决:终端执行命令查看(错误就会显示)
gradlew processDebugManifest --stacktrace
13、清单文件的package 与 application id 区别
1、package 就是项目的路径(包)。
2、application id是项目的唯一标识,不同的项目application id是不一样的。
3、二者没有关系,有时你会看到他俩一样其实他俩没关系,修改其一不会影响另一个。
package在清单文件中如下图(你修改左面目录,右面的字符串需要变,同时清单文件注册的四大组件路径也要修改)
application id 在build.gradle中 这里修改代表app发生改变(应用商店中每个app的application id都是唯一)不影响我们自己的项目。
14、LinearLayout的android:layout_gravity="bottom"不起作用问题
布局layout时, 发现设置了android:layout_gravity="bottom"后view并没有底对齐原因:
1、对于 LinearLayout当 android:orientation=“vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
2、当 android:orientation=“horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
解决:
1、使用view 占位(weight 属性)
2、替换linearlayout为RelativeLayout
小结
小知识总结下,动手写写。。。