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

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

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -