android"百码"2——基础小知识积累(逐步完善)2015-06-15
自己对java基础知识、语法、基本数据类型等方面都不是很掌握,经常在一些很基础的问题上折腾好一段时间,最近在执行“百码”计划,因此专门写一篇博文用于记录日常编程过程中遇到的一些薄弱知识点,逐个积累起来,填补自己的薄弱环节。
1.Spinner设置默认值
在对spinner设置完数据适配器后,系统默认将数据源的第一个数据作为spinner默认值,很多时候我们需要自定义这个默认值,或者说我们需要通过代码的方式去控制spinner当前值,这时候就需要用到setSelection()函数,使用代码如下:
spinner_Channeal1.setSelection(2,true);
就两个参数,第一个参数为所需设置的值在数据源中的索引值,第二个参数直接设为true即可,具体作用没研究过。
2.十六进制转十进制
最近在使用串口操作硬件设备,经常需要进行不同进制数值之间的转换,每次用到时候都需要上万能的百度去搜一遍,再从一大堆的回答里面挑选出自己所需要的,挺麻烦,今晚用到了十六进制转换为十进制,特此记录一下,方便日后调用:
Integer.parseInt("000003E8",16)
这个函数使用起来也很方便,第一个参数传入所需要转换的十六进制,第二个参数为转换数据源的进制类型。
3.一直混淆的equals 与 ==
经常碰到需要判断两个值是否相等,经常会把equlals与==混淆,用了一个不行,再用另外一个,效率很低下,今晚专门去研究了下两者的真面目,其实很容易分辨:在Java中除基本数据类型外其他一切都是对象,而对象变量存储的都是引用,相当于C++的指针,所有在比较对象时,如String,用==比较两个变量是否指向同一个对象,而equals才是比较两个String的内容是否相等。如:
String str1 = "dean"; String str2 = "dean"; String str3 = null; str1.equals(str2) 为true str1 == str2 为false str3 == null 为true str3.equals(null) 会报异常
总结(2015-06-15):说好的每天要编写100行以上真正属于自己的代码,结果今晚就写了上面两行,罪过。。。
4.java实体Bean(2015-06-16)
实体类其实就是俗称的POJO(Plain Old Java Objects 简单的Java对象),其意义就在于封装,类内部定义成员变量,也称为属性,通常将成员变量设置为private,外部无法对其直接进行操作,因此需要提供更改其value的方法,并通过getValue方法使外界可以读取到该成员变量的值。定义方式如下:
package com.example.threadandtasks; public class BeanTest { private String name;// 类beanTest的成员变量,也称属性;私有类型,外界无法直接诶访问 private int age; // 设置属性 public void setName(String name) { this.name = name; } // 获取属性 public String getName() { return name; } // 设置年龄 public void setAge(int age) { this.age = age; } // 获取年龄 public int getAge() { return age; } }
调用方法如下:
public BeanTest beanTest = new BeanTest(); beanTest.setName("张光源"); beanTest.setAge(18); String name = beanTest.getName(); int age = beanTest.getAge();
5.String转为十六进制
在对串口进行操作时,经常需要将用户输入的String字符转换为十六进制数值,通过输入输出流完成数据的通信,因此这也是一个很常用的功能,转换方法直接看代码:
/** * HEX字符串前补0,主要用于长度位数不足。 * * @param str * String 需要补充长度的十六进制字符串 * @param maxLength * int 补充后十六进制字符串的长度 * @return 补充结果 */ @SuppressWarnings("null") static public int[] patchHexString(String str, int maxLength) { String temp = ""; int[] swap = new int[4]; int j = 0; for (int i = 0; i < maxLength - str.length(); i++) { temp = "0" + temp; } str = (temp + str).substring(0, maxLength); for (int i = 0; i < maxLength; i += 2) { swap[j] = Integer.valueOf(str.substring(i, i+2), 16); j++; } return swap; }
6.studio无法启动模拟器
studio启动模拟器,出现以下错误:HAX is working and emulator runs in fast virt mode
解决方法:Tools->Android->SDK Manager->Extras->IntelX86Emulator Accelerator (HAXM installer) 安装即可。
7.style妙用
Style就是view的一些属性的集合,那么一系列view(例如TextVIew),使用了相同的style那么就具有相同的属性,如 文字的大少,颜色等。
<style name="textViewStyle"> <item name="android:layout_width">500dp</item>> <item name="android:layout_height">500dp</item>> <item name="android:textColor">#ffffff</item>> <item name="android:textSize">50sp</item>> </style>
8.Snackbar(Toast的发展物)
Snackbar功能和Toast类似,用于弹出提示信息。基本用法如下:
设置依赖包:
实例化Snackbar对象:
设置相关属性,并show: