Android小知识10则(上)(2018.8重编版)
Android小知识10则(下)
目录
- 前言
- 横竖屏锁定
- 不同分辨率的图标
- 将字符串写在资源文件中
- 为AlertDialog设置点击监听
- ProgressDialog了解一下
- 最后
前言
Android的知识还是比较碎的, 日常积累很重要. 我把平常一些小知识点整合整合, 理成了上下两篇文章, 每篇五个知识点.
横竖屏锁定
有两种方法可以实现
- 使用配置文件
在AndroidManifest.xml
的activity
标签下添加android:screenOrientation="portrait"
即可.默认是android:screenOrientation="unspecified"
, 也就是根据系统当前的横竖屏状态切换.- 使用Java代码
使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
是锁定横屏. 使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
是锁定竖屏.
个人推荐写在配置文件里面. 来两张图:
不同分辨率的图标
由于Android的分辨率很不统一, 小到4寸左右, 大到10寸左右. 屏幕适配是很恶心人的问题. 这里就简单说一下如何添加不同分辨率的图标到工程当中.
首先看一下官方的例子, 我们的目标就是让我们的图标按照不同分辨率, 放在一个同名文件夹中.
右击mipmap文件夹, 在目录中打开, 我的是mac所以显示finder, win/linux的话好像是文件浏览器之类的名称吧, 位置是差不多的.
然后就很简单了, 你只需要把不同分辨率的图标, 由小到大逐一放入到mipmap-hdpi到mipmap-xxxhdpi中即可. 当然了, drawable也是一样, 从drawable-hdpi到drawable-xxxhdpi.
回到Android Studio就会有想要的效果了, 用的时候只要输入图片名称即可, 系统会自动选择最合适的图片显示. 当然说是这么说, 其实布局文件还得按照分辨率来写不是, 没准还要区分版本(手动无奈).
将字符串写在资源文件中
将字符串写在资源文件中好处是不言而喻的, 便于管理, 便于查找, 便于维护, 便于全球化等等, 而且上传github的时候, 它也会死命提示你的(手动滑稽). 那就来看看这个知识点吧.
- 单个字符串
单个字符串的使用是非常简单的. 将字符串写在strings.xml中, java直接引用就好. 或者用getResources().getString()方法
<string name="single_str">SingleStr</string>
TextView tvSingleStr = (TextView) findViewById(R.id.tv_single_str);
tvSingleStr.setText(R.string.single_str);
getResources().getString(R.string.app_name);
- 字符串数组
字符串数组的使用稍微麻烦点. 同样在strings.xml中写一个字符串数组. 然后在java里面引用.
<string-array name="str_arr"><item>a</item><item>b</item><item>c</item><item>d</item>
</string-array>
String[] stringArray = getResources().getStringArray(R.array.str_arr);
TextView tvStrArr = (TextView) findViewById(R.id.tv_str_arr);
tvStrArr.setText(Arrays.toString(stringArray));
- 格式化字符串
这个格式化字符串在c里面是家常便饭, 但是到了java可能就没那么好使了. 总之, 也还是可以用的. 步骤还是一样, 先strings.xml, 后java.
<string name="format_str">我买了%1$d个苹果, 花了%2$.2f元, 抽到了%3$s去夏威夷的票, 用手比了一个%4$c</string>
String formatStr= String.format(getResources().getString(R.string.format_str), 5, 3.2, "两张", 'v');
TextView tvFormatStr = (TextView) findViewById(R.id.tv_format_str);
tvFormatStr.setText(formatStr);
为AlertDialog设置点击监听
- 为列表和单选列表设置监听
关于AlertDialog的初步使用请参见之前的文章. 然后来看具体添加监听的代码.
- 列表
直接在setItems后面添加监听函数, 或者新建类实现监听接口都是可以的, 要说的是, which对应点击的条目, 从0开始. 比如说点击"apple"就是0, 点击"boy"就是1.
builder.setItems(new String[]{"apple", "boy", "cat"}, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Log.i("sorrower", "which: " + which);}
});
- 单选列表
单选列表大体和列表相同, 值得一提的就是setSingleChoiceItems的第二个参数如果是-1, 就代表都不选, 如果是0, 代表默认选中第一个, 这里的话就是"apple".
builder.setSingleChoiceItems(new String[]{"apple", "boy", "cat"}, -1, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Log.i("sorrower", "which: " + which);}
});
- 为AlertDialog自带按钮设置监听
每个AlertDialog默认有三个按钮的, 肯定否定和中性. 这里不使用匿名监听, 我们新建一个类实现监听接口.
builder.setPositiveButton("positive", new clickListener());
builder.setNegativeButton("negative", new clickListener());
builder.setNeutralButton("neutral", new clickListener());
class clickListener implements DialogInterface.OnClickListener {@Overridepublic void onClick(final DialogInterface dialog, int which) {Log.i("sorrower", "which: " + which);}
}
然后得到的结果和猜想的不太一样, 点击NeutralButton, which的值是-3; 点击NegativeButton, which的值是-2; 点击PositiveButton, which的值是-1. 我们可以使用which值区分用户点击.
ProgressDialog了解一下
进度条弹窗还是很实用的, 今天就带大家了解一下! 先来张效果图:
final ProgressDialog pd = new ProgressDialog(this);
pd.setIcon(R.mipmap.ic_launcher_round);
pd.setTitle("Dealing...");pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 设置为矩形进度条pd.setCancelable(false);pd.setIndeterminate(false); // 设置进度条是否为不明确
pd.setMax(100);
pd.setProgress(0);pd.show();new Thread() {@Overridepublic void run() {for (int i = 0; i < 100; i++) {try {Thread.sleep(80);} catch (InterruptedException e) {e.printStackTrace();}final int j = i + 1;pd.setProgress(j);}pd.dismiss();}
}.start();
如果你改一行
pd.setIndeterminate(true);
, 那么就不会显示百分比, 和处理具体数. 直接上图:
如果你注释掉
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
这一行. 那么就是那种圆形扫描式的进度条, 你见过的. 上图:
最后
还有下篇的五个知识点哦, 觉得不错记得点赞或者关注我哦~
Android小知识10则(上)(2018.8重编版)相关推荐
- Android小知识10则(下)
Android小知识10则(上) github传送门 注: 在目录中点击可以跳转到具体代码页 目录 Chronometer和CountDownTimer计时器 Chronometer的使用 Count ...
- [奇怪的小知识]从网页上下载内嵌的PDF、PPT文件(以Google浏览器为例)
[奇怪的小知识]从网页上下载内嵌的PDF.PPT文件(以Google浏览器为例) 1. 打开谷歌浏览器开发者工具 实操网址 2. 选中Network->Fetch/XHR 3. 刷新网页 刷新网 ...
- android小知识(1)
1.Android名称的由来. 大家可能不知道,Android一词的本义原指"机器人",它也是谷歌于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操 ...
- visio for android,Visio将在不久的将来会在Android和Windows 10手机上使用 | MOS86
在8月25日,微软发布了适用于iPad的Visio预览版本,本月初,它发布了一个预览程序来访问Visio图表.但是并没有结束,微软仍然在尝试通过Android和Windows Phone或Window ...
- 基于Android Studio经典蓝牙APP---继上一次的完善版
基于Android Studio经典蓝牙APP-继上一次的完善版 考虑到好友网友们反馈的问题总结了以下几点: 1.工程下载爆红:版本问题-gradle:4.1.1. 2.无接收数据功能,怎么实现:这里 ...
- android byte转string_唠点儿你不一定知道的Android小知识
本文作者 作者:郑卫超 链接: https://vchao.blog.csdn.net/article/details/104349868 本文由作者授权发布. 1. YYYY 和 yyyy 不一样 ...
- 关于计算机的趣味小知识,10个非常有意思的趣味知识和科学事实
世界上充满了神秘和非常有意思的东西,我们应该抱着开放的思维和思想去了解这些知识和事实.对任何我们不理解的东西,我们应该以非常开放的科学思维尝试去思考.只有这样我们的思维才能越来越充满创造力和想象力. ...
- Android 小知识
1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environmen ...
- 原生js绑定click为什么点一次执行两次_前端小知识10点(2020.10.8)
1.redux的compose实现 例: const add = num => num + 10 const multiply = num => num * 2 const foo = c ...
最新文章
- 浅谈博客园的初使用体验
- supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析
- C++ :常用文件、文件夹操作汇总
- 牛客 - 拿物品(贪心)
- Linux+QT界面开发(含数据库)小结
- 基于PHP以及JQUERY AJAX的计算器实例
- 最佳实践 —— 单元测试
- 一篇文章让你拥有用不完的ip代理
- 如何有效的进行项目进度计划
- 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册
- arm-linux-gcc stdio.h,arm-linux-gcc stdio.h no such file or directory错误
- java7 3dm下载_我的世界 1.7.10最新forge极简整合包
- sqlserver:什么是数据库实例?
- java程序将asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv,mpeg,mpe,wmv9,rm,rmvb转MP4
- alt复制选区就会卡 ps_PS经常用到的复制技巧
- java毕业设计演唱会门票订售及管理系统Mybatis+系统+数据库+调试部署
- C++知识点(持续更新)
- 8.0之后关闭个人热点功能实现
- 解决win10开机内存过高的办法(亲测有效)
- 看不懂此文,你离亏钱就不远了(炒股心得)
热门文章
- Java流程控制01 用户交互Scanner
- 软件测试黑马程序员课后答案_软件测试课后答案
- linux删除csv换行符,从CSV保存行删除换行符(Remove linefeed from csv preserving r
- Linux谁访问这个内存,Linux中的直接内存访问
- 节能与新能源汽车技术路线图2.0 pdf_《节能与新能源汽车技术路线图(2.0版)》正式发布...
- 达内python第二阶段月考_oracle练习题 达内第二次月考题
- juypter 不省略_常用pandas清洗数据命令
- 无心剑古体诗《永恒之美》
- 大数据学习笔记13:MR案例——显示每年最高温度
- Vue学习笔记:使用CLI构建Vue项目