工作日志(2018-05)

     5月, 初夏, 继续码砖, 何去何从, 恐不久已.

Monday 7th

     有一个是关于 DialogFragment 的使用案例. DialogFragment 是安卓官方推荐的对话框控件. 用于处理各种对话框操作.
     如果是一个制定大小的对话框. 在 DialogFragment 对应的 .xml 文件的根布局控件中, 添加:

1
2
android:minHeight="300dp"
android:minWidth="600dp"

     则就可以展示一个宽为 600dp, 高为 300dp 的对话框.
     如果是需要对话框全屏显示呢? 发现仅仅在 .xml 的中, 根布局控件指定:

1
2
android:layoutWidth="match_parent"
android:layoutHeight="match_parent"

     无法实现预期效果.
     然后去问了下谷歌, 并没有什么太好的解决方案. 其中的一种方法是说, 通过给 DialogFragment 设置主题来实现全屏功能.

1
2
3
4
5
6
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用 android.R.style.Theme_Holo 主题.
setStyle(DialogFragment.STYLE_NO_TITLE | DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo);
}

     虽然实现了功能, 但是该主题的很多设置, 也添加到了该 DialogFragment 中. 所以说, 对于仅仅添加全屏功能, 并不是一种很好的解决方案, 因为有副作用.
     我们只需要全屏, 并不需要 android.R.style.Theme_Holo 主题的其他功能, 于是乎, 追踪一下主题文件, 我们发现有这个样子的一行代码.



     来望文生义一下, 这一行代码应该就是控制全屏的, 把它提取出来, 在 style.xml 文件中添加:

1
2
3
<style name="no_net_dialog_style">
<item name="android:windowFullscreen">true</item>
</style>

     然后在 DialogFragmentonCreate() 方法中添加使用主题的方法:

1
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.no_net_dialog_style);

     运行, 调试, 完美解决.
     PASS: style(int, int) 方法的第一个参数, DialogFragment.STYLE_NO_TITLE 表示的不使用系统当前主题的 title; 至于 DialogFragment.STYLE_NO_FRAME, 如果添加了这个属性, 那么 DialogFragment 仅仅是一个图层展示, 下面的 Activity (假设是从一个 Activity 启动的) 依旧会响应事件.

Wednesday 16th

     方才有修改的本地缓存的相关模块, 然而有把缓存的相关路径搞错了.

1
2
getCacheDir() - 用于获取 data/data/com.appliationname/cache/ 目录
getFilesDir() - 用于获取 data/data/com.appliationname/files/ 目录.

     而对应的

1
2
getExternalCacheDir - 用于获取 SDCard/Android/data/com.applicationname/cache/ 目录
getExternalFilesDir() - 用于获取 SDCard/Android/data/com.applicationname/files/ 目录

     Android 系统的菜单中: 设置 -> 应用 -> 应用详情里面的 “清除数据” 选项, 会清除 getFilesDir()getExternalFilesDir() 目录下的文件; “清除缓存” 则会清除 getCacheDir()getExternalCacheDir() 目录下的数据.

     下面是一些其他的的系统路径.

1
2
3
4
5
6
7
8
9
10
11
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.app.name/app_test
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.app.name/files/test
~感谢捧场,您的支持将鼓励我继续创作~