android - NPE when blurring layout Bitmap -



android - NPE when blurring layout Bitmap -

i have managed turn layout bitmap. want blurr bitmap renderscript blur method have set up, maintain getting nullpointerexception when trying blur bitmap.

when pass renderscripy blurr method other bitmaps, works, it's not working when pass created bitmap layout.

would know doing wrong here? driving me crazy.

relativelayout blurlayout; blurlayout = (relativelayout) view.findviewbyid(r.id.blurcontainer); blurlayout.setdrawingcacheenabled(true); blurlayout.builddrawingcache(); bitmap bluredlayout = blurlayout.getdrawingcache(); //this returns null bitmap finalblur = bitmap.createbitmap(fastblur16(bluredlayout, 25, getactivity())); drawable d = new bitmapdrawable(getresources(), finalblur); private static bitmap fastblur16(bitmap source, int radius, context ctx) { bitmap bitmap = source.copy(source.getconfig(), true); renderscript rs = renderscript.create(ctx); allocation input = allocation.createfrombitmap(rs, source, allocation.mipmapcontrol.mipmap_none, allocation.usage_script); allocation output = allocation.createtyped(rs, input.gettype()); scriptintrinsicblur script = scriptintrinsicblur.create(rs, element.u8_4(rs)); script.setradius(radius); script.setinput(input); script.foreach(output); output.copyto(bitmap); homecoming bitmap; }

stack trace:

fatal exception: main java.lang.nullpointerexception @ com.example.stackoverflowquestion.fragmentview.fastblur16(fragmentview.java:221) @ com.example.stackoverflowquestion.fragmentview.oncreateview(fragmentview.java:178) @ android.support.v4.app.fragment.performcreateview(fragment.java:1504) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:942) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1121) @ android.support.v4.app.backstackrecord.run(backstackrecord.java:682) @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1484) @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:482) @ android.support.v4.app.fragmentstatepageradapter.finishupdate(fragmentstatepageradapter.java:163) @ android.support.v4.view.viewpager.populate(viewpager.java:1073) @ android.support.v4.view.viewpager.populate(viewpager.java:919) @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1441) @ android.view.view.measure(view.java:16030) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5012) @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1404) @ android.widget.linearlayout.measurevertical(linearlayout.java:695) @ android.widget.linearlayout.onmeasure(linearlayout.java:588) @ android.view.view.measure(view.java:16030) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5012) @ android.widget.framelayout.onmeasure(framelayout.java:314) @ android.view.view.measure(view.java:16030) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5012) @ com.android.internal.widget.actionbaroverlaylayout.onmeasure(actionbaroverlaylayout.java:302) @ android.view.view.measure(view.java:16030) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5012) @ android.widget.framelayout.onmeasure(framelayout.java:314) @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2196) @ android.view.view.measure(view.java:16030) @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:1915) @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1109) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1290) @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1009) @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5508) @ android.view.choreographer$callbackrecord.run(choreographer.java:749) @ android.view.choreographer.docallbacks(choreographer.java:562) @ android.view.choreographer.doframe(choreographer.java:532) @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:735) @ android.os.handler.handlecallback(handler.java:730) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:213) @ android.app.activitythread.main(activitythread.java:5225) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:741) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:557) @ dalvik.system.nativestart.main(native method)

using @katerina a.'s solution:

i have code in oncreateview on fragment

blurlayout = (relativelayout) view.findviewbyid(r.id.blurcontainer); blurlayout.setdrawingcacheenabled(true); blurlayout.builddrawingcache(true); drawncachebittmap = bitmap.createbitmap(blurlayout.getdrawingcache()); blurlayout.setdrawingcacheenabled(false);

then tried using onstart

@override public void onstart() { // todo auto-generated method stub bitmap bluredlayout = bitmap.createbitmap(fastblur16(drawncachebitmap, 25, getactivity())); drawable d = new bitmapdrawable(getresources(), bluredlayout); int sdk = android.os.build.version.sdk_int; if (sdk < android.os.build.version_codes.jelly_bean) { blurlayout.setbackgrounddrawable(d); } else { blurlayout.setbackground(d); } super.onstart(); }

i suspect drawing cache bitmap null. have next before getting drawingcache

v.setdrawingcacheenabled(true); v.builddrawingcache(true); bitmap b = bitmap.createbitmap(v.getdrawingcache()); v.setdrawingcacheenabled(false); // clear drawing cache

i still think matter of timing. if phone call getdrawingcache in oncreateview, still not sure layout has been measured yet. seek getting drawingcache in onstart. alternatively can utilize predrawlistener, scheme ready. instance.

@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_layout, container, false); view.getviewtreeobserver().addonpredrawlistener(new viewtreeobserver.onpredrawlistener() { @override public boolean onpredraw() { image.getviewtreeobserver().removeonpredrawlistener(this); image.builddrawingcache(); bitmap bmp = image.getdrawingcache(); fastblur(bmp); } }); homecoming view; }

android bitmap nullpointerexception renderscript

Comments

Popular posts from this blog

php - How to pass multiple values from url -

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

database - php search bar when I press submit with nothing in the search bar it shows all the data -