6.9学习内容 设置相机参数,android古怪的bug,仿微信可点击的点赞文字

来源:互联网 发布:exchange 587端口 编辑:程序博客网 时间:2024/06/05 09:45

上一篇文章中,说相机设置参数无效是错误的,内疚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("觉得赞");        }    }












0 0
原创粉丝点击