上一篇文章中,说相机设置参数无效是错误的,内疚ing。。。。
正确的设置方法是这样的:
parameters = camera.getParameters(); // 获取各项参数
parameters.setPictureFormat(PixelFormat.JPEG); // 设置图片格式
parameters.setPreviewFrameRate(5); //设置每秒显示4帧
// 设置预浏尺寸,注意要在摄像头支持的范围内选择
Camera.Size size = getMaxSize(parameters);
parameters.setPreviewSize(size.height,size.width);
// parameters.setPictureSize();
// parameters.setPictureSize(1280,720);
// parameters.setPictureSize(500, 100); // 设置保存的图片尺寸
parameters.setJpegQuality(80); // 设置照片质量
parameters.setRotation(90);
camera.setParameters(parameters);
camera.startPreview(); // 开始预览
今天留意到一个奇怪的bug:
Exception:Attempt to invoke virtual method 'void <span style="font-family: Arial, Helvetica, sans-serif;">$packname</span><span style="font-family: Arial, Helvetica, sans-serif;">.vo.UsedVO.setBdLat(double)' on a null object reference</span>
$packname.activity.HomeActivity.onDataUpdate(HomeActivity.java:869)
<pre name="code" class="html">$packname<span style="font-family: Arial, Helvetica, sans-serif;">.impl.ClassConcrete.postDataUpdate(ClassConcrete.java:125)</span>
$packname<span style="font-family: Arial, Helvetica, sans-serif;">.service.AppConnectService$SocketLongConnect$1.handleMessage(AppConnectService.java:211)</span>
android.os.Handler.dispatchMessage(Handler.java:102)android.os.Looper.loop(Looper.java:155)android.app.ActivityThread.main(ActivityThread.java:5696)java.lang.reflect.Method.invoke(Native Method)java.lang.reflect.Method.invoke(Method.java:372)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
出现的代码段是:
chooiceVo.setBdLat(vo.getBd_lat());//这行报错了
chooiceVo.setBdLng(vo.getBd_lng());
其中setBdLat()传入的只有double基本类型
而且vo.getBd-lat()返回的也只有基本类型,
这是个已经上线的项目,是编译通过的,理论上不会出现set或get的时候出现null,如果可以null,编译器也是不允许的,
于是网上找了找这个bug,没有细心找,也没有找到正确合理的解决方案,放到找到一个离谱的出现原因:
findViewById(int) null异常
http://www.itstrike.cn/Question/c1875732-f5bd-4f4c-9ff8-fde6a674bd56.html本人怀疑是编译器的问题,或者java内部是使用反射运行的,只是猜测,有兴趣深入研究
textview显示出微信点赞的文字效果:
http://www.java123.net/v/440354.html
http://www.android100.org/html/201304/20/2237.html
这个有预览:http://www.2cto.com/kf/201409/331122.html
项目需要,自己改着写了一个:
/**
* 生成可以点击的文字
* @param
* @return
*/
public static SpannableStringBuilder addClickablePart(Activity activity,String[] names,boolean limit,final AdapterView.OnItemClickListener listener) {
// 第一个赞图标
// ImageSpan span = new ImageSpan(activity, R.drawable.icon_dynamic_like);
SpannableString spanStr = new SpannableString("");
// spanStr.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
if (names==null) {
names = new String[0];
}
SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr);
StringBuffer sb = new StringBuffer();
for (String str:names) {
sb.append(str+",");
}
if (sb.length()>0) {
sb.deleteCharAt(sb.length()-1);
}
ssb.append(sb);
// 最后一个
for (int i = 0; i < names.length; i++) {
if (limit && i>2) {
break;
}
final String name = names[i];
final int start = sb.indexOf(name) + spanStr.length();
final int index = i;
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
if (listener!=null) {
listener.onItemClick(null,null,index,0);
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
// ds.setColor(Color.RED); // 设置文本颜色
// 去掉下划线
ds.setUnderlineText(false);
}
}, start, start + name.length(), 0);
}
if (limit && names.length>2) {
return ssb.append("等"
+ names.length + "人赞了您");
} else {
return ssb.append("觉得赞");
}
}