琐碎:
-
注意最高、最低安卓版本,容易导致安装不成功;
-
主节点ImageView中直接src指向图标图片会导致程序运行出错;
-
引用外部图片注意在手机中大小尺寸;
-
将一个属性文字,如: android:text=“用户注册”=》android:text="@id/longin" ;可以左侧灯泡提示按钮下的Extract string resource即可;
-
RadioGroup和TableLayout都继承LinerLayout;
-
占位符 %s表示字符串类型占位符,%d表示整型占位符,%f表示浮点型占位符
实际使用的时候一般都会使用%n$s,这里的n表示索引,第几个要被替换的字符串,而且String.format这个方法根据索引填充数据;
例:String callerClassName=caller.getClassName(); callerClassName = callerClassName.substring(callerClassName.lastIndexOf("." + 1)); tag=String.format(tag,callerClassName,caller.getMethodName(),caller.getLineNumber()); ```
-
& 位运算符:在C语言中 1相当于true,0相当于false。
0&0=0
1&0=0
0&1=0
1&1=1
- 新建资源文件夹 assets :
Gradle相关:
- gradle插件和依赖
gradle在build.gradle(project)文件的dependencies { classpath ‘com.android.tools.build:gradle:3.5.2’}
其中3.5.2’代表的gradle插件的版本号而不是依赖文件的版本号;
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
依赖文件的版本号在gradle-wrapper.properties(Gradle Version)文件中的distributionUrl=https://services.gradle.org/distributions/gradle-5.4.1-all.zip
其中distributionUrl属性代表的网上中央仓库地址,地址可以改为本地文件地址做为中央仓库distributionUrl=file:/E:/gradle-5.4.1-all.或者distributionUrl=file:/E:/gradle-5.4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
注意:gradle插件和gradle依赖库的版本号有对应关系;并不是相同的的
详情请查看gradle插件和gradle依赖对应表
- gradle中央仓库和本地仓库设置
点击File==>Settings==>Build,Execution,Deployment==>Gradle;
联网下载的中央仓库资源存放C:\Users\Administrator.gradle文件夹下
修该中央仓库下载位置:
添加环境变量GRADLE_USER_HOME,值填写保存位置
OKHttps3框架使用:
- 在build.gradle中添加依赖
implementation 'com.squareup.okhttp3:okhttp:3.4.1'
implementation 'com.squareup.okio:okio:1.10.0'
- 在AndroidManifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
后续更新。。。。
PDF加载显示:
在安卓上预览并生成PDF文件,没有什么好的框架用的原生的itextpdf-5.5.10.jar,将一张张图片组合生成PDF文件,
最开始是使用ViewPager控件显示,在生成前将图片一张一张显示,坏处是无法进行其他操作,且量大的话加载比较缓慢。
后来使用PDFview提示已经过期,根据连接找到PDFviewer,试运行总是不出画面,位置原因,最后根据网上推荐使用了PDF.js 根据提示下载,我已经上传资源,
推荐去官网下载还能看一下示例:
官网下载连接:http://mozilla.github.io/pdf.js/getting_started/#download
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821091535674.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdocndvcms=,size_16,color_FFFFFF,t_70#pic_center)
代码部分,我是直接生成后加载本地文件所以就不写加载网络资源的了,网上很多,下面解压后文件存放位置和结构:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020082109434456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdocndvcms=,size_16,color_FFFFFF,t_70#pic_center)
```java
WebSettings webSettings = pdfView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDomStorageEnabled(true);
try {
pdfView.loadUrl("file:///android_asset/pdf_js/web/viewer.html?file=file://"+path);
} catch (Exception e) {
e.printStackTrace();
}
要注意的是读取本地文件一定要先开启读取权限,不然就等着报文件找到异常吧,上面几个webSettings.set主要为了使用js脚本,根据文件路径加载文件和访问存储设置;
根据不同需求可以自定义viewer.html文件,包括里面的事件方法:
先更这些,有空再更。。。。
声音加载:
安卓的声音加载,看了看网上主要是两个:一个使用用MediaPlayer另一个是SoundPool;
MediaPlayer适用于频率不高的文件比如歌曲;
SoundPool更使用与使用频繁场景,比如声效,报警;
code:
MediaPlayer player = MediaPlayer.create(this, R.raw.beep);
try {
player.prepare();// 同步
} catch (IOException e) {
e.printStackTrace();
}
player.start();
//循环播放
// player.setLooping(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
soundPool = new SoundPool.Builder()
.setMaxStreams(10)
.build();
} else {
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
}
sourceId = soundPool.load(this, R.raw.beep_4, 0);
try {
Thread.sleep(500); //加载资源缓冲期
} catch (InterruptedException e) {
e.printStackTrace();
}
soundPool.play(sourceId, 1, 1, 0, 0, 1);
值得注意的就是soundPool 有时候会没有声音,那是因为声音加载还未完成,所以要预先加载资源文件,使用完之后记得释放soundPool资源不然有可能会导致一直播放,无法关闭(软件关闭之前各个页面都会播放);
soundPool资源大小最好不要大过1m,播放可以根据资源id进行暂停,循环,速率进行设置,这里就不过多解释,直接看参数前的提示就能看到;
有空继续。。。。。