上一篇文章中,说相机设置参数无效是错误的,内疚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,没有细心找,也没有找到正确合理的解决方案,放到找到一个离谱的出现原因:
本人怀疑是编译器的问题,或者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("觉得赞"); } }