ZHbos:
1. ①textView 限定行数
textView.setMaxLines(3); 最多几行
②划掉的效果:
tvNovipprice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
③ 设置Visibility
// 如果最后更新的时间的文本是空的话,隐藏前面的标题
① textView.setText(Double.valueOf(remoteDetailModel.price) > 0 ? ("¥" + remoteDetailModel.price + "元/次") : "免费");
②setText(Double.valueOf(model.getPrice()) > 0 ? CommonUtil.doubleTranstoStr(Double.valueOf(model.getPrice())) + "元" : "免费");
③ CommonUtil.doubleTranstoStr // 把double型转成String
3.
错误①解决: 空指针 ,取消按钮布局去掉了,而java中是用id 设置的监听,没删掉 所以出错了。
调试:
运行起来,点击“Attach debugger to Android Process.”
4. Json 数据 Bean增加字段
① 在Bean中添加一个变量,生成set/get方法,Studio 快捷键 :Alt + Insert.
gson库会自动完成 set/get 的方法,把json数据解析成Bean.
② 把变量定义成 public,就不用 get/set 方法了。
5. Boolean 与 boolean的区别
boolean是基本数据类型
Boolean是它的封装类,和其他类一样,有属性有方法,可以new,例如:
Boolean flag = new Boolean("true"); // boolean 则不可以!
Boolean 是boolean 的实例化对象类,和Integer对应int一样
同理,Integer 与 int 也是一样
6. 将数组转换成List:
// 不要直接Arrays.asList
mDataList = new ArrayList<String>(Arrays.asList("HelloWorld", "Welcome", "Java", "Android", "Servlet", "Struts","Hibernate", "Spring", "HTML5", "Javascript", "Lucene"));
7. 将String 分割成数组
String[] ids=str.split(","); // 将String 分割成数组
① 自定义ActionBar布局
9. Android Studio R 导入不了,出错的问题
分析:是因为layout等资源出错等问题,导入R没有生成成功。
可查看 /app/build/generated/source/r/debug 或者 /app/gradle/wheel/gen下是否有R.
10. 间隔的问题
巧用android:divider属性设置LinearLayout中元素之间的间隔
简单点 用系统自带的divider: android:divider="?android:attr/dividerHeight"
11. Android Studio 中导入jar包:
① 把jar 包拷入libs目录下
② 在 build.gradle下的dependencies中加入
compile files('libs/eventbus.jar')
Android Studio中导入 library:
① import Modules...
② 工程右键 -->open module setting -->Dependencies 加入library.
12. 价格格式,日期格式
13. 十进制和十六进制的相互转换
① 十进制转化为十六进制,结果为C8。
Integer.toHexString(200);
② 十六进制转化为十进制,结果140。
Integer.parseInt("8C",16);
链接:Java的十六进制与字符串之间互相转换函数(16进制与String转换)
14. JSON解析
① 如果是Json对象
JSONObject jsonObject=new JSONObject(resultBean.getResult());
String url = jsonObject.getString("url");
② 如果要解析成Json数组
JSONArray result = new JSONArray(resultBean.getResult()); //解析成Json数组
ArrayList<SaveMoneyItemModel> dataList = gson.fromJson(result.toString(), new
TypeToken<ArrayList<SaveMoneyItemModel>>() {}.getType());
或者:
JSONObject result=new JSONObject(resultBean.getResult());
JSONArray array = result.getJSONArray("order");
ArrayList<SaveMoneyItemModel> dataList = gson.fromJson(array.toString(), new
TypeToken<ArrayList<SaveMoneyItemModel>>() {}.getType());
15. ScrollView中事件冲突解决
16. xml转化成View
需要用inflate, 有几种方式:
① LayoutInflater layoutInflate=LayoutInflater.from(context);
View view=layoutInflater.inflate(layoutId,null);
② View view = View.inflate(context,layoutId,null);
17. 9Patch
左边 那条黑色线代表图片垂直拉伸的区域,
上边 那条黑色线代表水平拉伸区域,
右边 黑色线代表内容绘制的垂直区域,
下边 黑色线代表内容绘制的水平区域,
右边和下边的线是可选的,左边和上边的线不能省略。
18. 解决scrollView中嵌套编辑框导致不能上下滑动的问题
19. SparseArray、ContentValues、Bundle、Parcelable
③ Bundle(用于两个activity之间通讯) 也是key -value的形式。<String,多类Parcelable> Android Bundle类
④ Android Parcelable和Serializable的区别
20. listview addHeaderView和addFooterView的注意事项
1. ①textView 限定行数
textView.setMaxLines(3); 最多几行
②划掉的效果:
tvNovipprice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
③ 设置Visibility
// 如果最后更新的时间的文本是空的话,隐藏前面的标题
mHeaderTimeViewTitle.setVisibility(TextUtils.isEmpty(label) ? View.INVISIBLE : View.VISIBLE);
④ 设置字体样式
tvStepCount.setText(Html.fromHtml("<font color='black'>步数:</font>" + "<font color='red'>" + todayStep + "</font>"));
2. 价格 免费① textView.setText(Double.valueOf(remoteDetailModel.price) > 0 ? ("¥" + remoteDetailModel.price + "元/次") : "免费");
②setText(Double.valueOf(model.getPrice()) > 0 ? CommonUtil.doubleTranstoStr(Double.valueOf(model.getPrice())) + "元" : "免费");
③ CommonUtil.doubleTranstoStr // 把double型转成String
3.
错误①解决: 空指针 ,取消按钮布局去掉了,而java中是用id 设置的监听,没删掉 所以出错了。
调试:
运行起来,点击“Attach debugger to Android Process.”
4. Json 数据 Bean增加字段
① 在Bean中添加一个变量,生成set/get方法,Studio 快捷键 :Alt + Insert.
gson库会自动完成 set/get 的方法,把json数据解析成Bean.
② 把变量定义成 public,就不用 get/set 方法了。
5. Boolean 与 boolean的区别
boolean是基本数据类型
Boolean是它的封装类,和其他类一样,有属性有方法,可以new,例如:
Boolean flag = new Boolean("true"); // boolean 则不可以!
Boolean 是boolean 的实例化对象类,和Integer对应int一样
同理,Integer 与 int 也是一样
6. 将数组转换成List:
// 不要直接Arrays.asList
mDataList = new ArrayList<String>(Arrays.asList("HelloWorld", "Welcome", "Java", "Android", "Servlet", "Struts","Hibernate", "Spring", "HTML5", "Javascript", "Lucene"));
7. 将String 分割成数组
String[] ids=str.split(","); // 将String 分割成数组
char[] aa=str.toCharArray(); //取出String中的字符
① 自定义ActionBar布局
private void initActionBar() {
// Activity继承自 ActionBarActivity
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
LayoutInflater inflater = LayoutInflater.from(this);
// 得到自定义的View
final View actionBarView = inflater.inflate(R.layout.coustom_health_education_actionbar, null);
TextView title = (TextView) actionBarView.findViewById(R.id.actionbar_title_text);
LinearLayout layout_search = (LinearLayout) actionBarView.findViewById(R.id.layout_search);
TextView actionbar_subscribe = (TextView) actionBarView.findViewById(R.id.actionbar_subscribe);
actionbar_subscribe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(HealthEducationActivity.this, HealthManagerSubscribeActivity.class));
}
});
actionBar.setCustomView(actionBarView); // 将View设置进ActionBar
actionBar.setDisplayShowCustomEnabled(true); // 将自定义功能设为可用
9. Android Studio R 导入不了,出错的问题
分析:是因为layout等资源出错等问题,导入R没有生成成功。
可查看 /app/build/generated/source/r/debug 或者 /app/gradle/wheel/gen下是否有R.
10. 间隔的问题
巧用android:divider属性设置LinearLayout中元素之间的间隔
简单点 用系统自带的divider: android:divider="?android:attr/dividerHeight"
11. Android Studio 中导入jar包:
① 把jar 包拷入libs目录下
② 在 build.gradle下的dependencies中加入
compile files('libs/eventbus.jar')
Android Studio中导入 library:
① import Modules...
② 工程右键 -->open module setting -->Dependencies 加入library.
12. 价格格式,日期格式
// 格式化价格
public static String formatPrice(Double price)
{
String newprice = "0.00";
DecimalFormat df = new DecimalFormat("#######0.00");
newprice = df.format(price);
return newprice;
}
//字符串转换成日期 (默认格式:yyyy-MM-dd HH:mm:ss)
//strToDate(str, "yyyy-MM-dd HH:mm:ss");
public static Date strToDate(String str, String format)
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = null;
try
{
date = sdf.parse(str);
}catch (ParseException e)
{ }
return date;
}
13. 十进制和十六进制的相互转换
① 十进制转化为十六进制,结果为C8。
Integer.toHexString(200);
② 十六进制转化为十进制,结果140。
Integer.parseInt("8C",16);
链接:Java的十六进制与字符串之间互相转换函数(16进制与String转换)
14. JSON解析
① 如果是Json对象
JSONObject jsonObject=new JSONObject(resultBean.getResult());
String url = jsonObject.getString("url");
② 如果要解析成Json数组
JSONArray result = new JSONArray(resultBean.getResult()); //解析成Json数组
ArrayList<SaveMoneyItemModel> dataList = gson.fromJson(result.toString(), new
TypeToken<ArrayList<SaveMoneyItemModel>>() {}.getType());
或者:
JSONObject result=new JSONObject(resultBean.getResult());
JSONArray array = result.getJSONArray("order");
ArrayList<SaveMoneyItemModel> dataList = gson.fromJson(array.toString(), new
TypeToken<ArrayList<SaveMoneyItemModel>>() {}.getType());
15. ScrollView中事件冲突解决
wv_content = (WebView) findViewById(R.id.wv_content);
sv_layout=(ScrollView)findViewById(R.id.sv_layout);
//滑动时 sv_layout不拦截事件
wv_content.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
sv_layout.requestDisallowInterceptTouchEvent(true);
return false;
}
});
16. xml转化成View
需要用inflate, 有几种方式:
① LayoutInflater layoutInflate=LayoutInflater.from(context);
View view=layoutInflater.inflate(layoutId,null);
② View view = View.inflate(context,layoutId,null);
17. 9Patch
左边 那条黑色线代表图片垂直拉伸的区域,
上边 那条黑色线代表水平拉伸区域,
右边 黑色线代表内容绘制的垂直区域,
下边 黑色线代表内容绘制的水平区域,
右边和下边的线是可选的,左边和上边的线不能省略。
18. 解决scrollView中嵌套编辑框导致不能上下滑动的问题
19. SparseArray、ContentValues、Bundle、Parcelable
解析:① SparseArray 是android里为<Interger,Object> 这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch).
Android应用性能优化之使用SparseArray替代HashMap
③ Bundle(用于两个activity之间通讯) 也是key -value的形式。<String,多类Parcelable> Android Bundle类
④ Android Parcelable和Serializable的区别
20. listview addHeaderView和addFooterView的注意事项