android - Invalidating 1 Custom View Causes All Custom Views In A View Group To Be Invalidated? -


i have custom view group. in custom view group number of custom views. custom views overlap each other in layout.

the overlapping views intential create "layers". 1 layer may create static content, layered view creates different animated content. problem comes when call .postinvalidate thread on 1 view animation runs @ 60fps. outside of layered views 60fps achievable device i'm using (galaxy s3).

inside custom view group, .invalidate causes 1 out of 2 hardware rendered views invalidate, , of software views invalidate it.

mycustomviewthatshouldnotinvalidate(abstractdiallayer).ondraw(canvas) line: 68     mycustomviewthatshouldnotinvalidate.ondraw(canvas) line: 79     mycustomviewthatshouldnotinvalidate(view).draw(canvas) line: 13650     mycustomviewthatshouldnotinvalidate(view).draw(canvas, viewgroup, long) line: 13534     mycustomviewgroup(viewgroup).drawchild(canvas, view, long) line: 2938     mycustomviewgroup(viewgroup).dispatchdraw(canvas) line: 2808     mycustomviewgroup(view).builddrawingcache(boolean) line: 12909     mycustomviewgroup(view).getdisplaylist(displaylist, boolean) line: 12580     mycustomviewgroup(view).getdisplaylist() line: 12645 relativelayout(viewgroup).dispatchgetdisplaylist() line: 2920     relativelayout(view).getdisplaylist(displaylist, boolean) line: 12537     relativelayout(view).getdisplaylist() line: 12645     relativelayout(viewgroup).dispatchgetdisplaylist() line: 2920     relativelayout(view).getdisplaylist(displaylist, boolean) line: 12537     relativelayout(view).getdisplaylist() line: 12645     nosavestateframelayout(viewgroup).dispatchgetdisplaylist() line: 2920     nosavestateframelayout(view).getdisplaylist(displaylist, boolean) line: 12537     nosavestateframelayout(view).getdisplaylist() line: 12645     viewpager(viewgroup).dispatchgetdisplaylist() line: 2920     viewpager(view).getdisplaylist(displaylist, boolean) line: 12537     viewpager(view).getdisplaylist() line: 12645     linearlayout(viewgroup).dispatchgetdisplaylist() line: 2920     linearlayout(view).getdisplaylist(displaylist, boolean) line: 12537     linearlayout(view).getdisplaylist() line: 12645     relativelayout(viewgroup).dispatchgetdisplaylist() line: 2920     relativelayout(view).getdisplaylist(displaylist, boolean) line: 12537     relativelayout(view).getdisplaylist() line: 12645     nosavestateframelayout(viewgroup).dispatchgetdisplaylist() line: 2920     nosavestateframelayout(view).getdisplaylist(displaylist, boolean) line: 12537     nosavestateframelayout(view).getdisplaylist() line: 12645     linearlayout(viewgroup).dispatchgetdisplaylist() line: 2920     linearlayout(view).getdisplaylist(displaylist, boolean) line: 12537     linearlayout(view).getdisplaylist() line: 12645     longpressgesturedetectingframelayout(viewgroup).dispatchgetdisplaylist() line: 2920     longpressgesturedetectingframelayout(view).getdisplaylist(displaylist, boolean) line: 12537     longpressgesturedetectingframelayout(view).getdisplaylist() line: 12645     framelayout(viewgroup).dispatchgetdisplaylist() line: 2920     framelayout(view).getdisplaylist(displaylist, boolean) line: 12537     framelayout(view).getdisplaylist() line: 12645     linearlayout(viewgroup).dispatchgetdisplaylist() line: 2920     linearlayout(view).getdisplaylist(displaylist, boolean) line: 12537     linearlayout(view).getdisplaylist() line: 12645     customviewabove(viewgroup).dispatchgetdisplaylist() line: 2920     customviewabove(view).getdisplaylist(displaylist, boolean) line: 12537     customviewabove(view).getdisplaylist() line: 12645     slidingmenu(viewgroup).dispatchgetdisplaylist() line: 2920     slidingmenu(view).getdisplaylist(displaylist, boolean) line: 12537     slidingmenu(view).getdisplaylist() line: 12645     phonewindow$decorview(viewgroup).dispatchgetdisplaylist() line: 2920     phonewindow$decorview(view).getdisplaylist(displaylist, boolean) line: 12537     phonewindow$decorview(view).getdisplaylist() line: 12645     hardwarerenderer$gl20renderer(hardwarerenderer$glrenderer).draw(view, view$attachinfo,         hardwarerenderer$hardwaredrawcallbacks, rect) line: 1170     viewrootimpl.draw(boolean) line: 2275     viewrootimpl.performdraw() line: 2147     viewrootimpl.performtraversals() line: 1958     viewrootimpl.dotraversal() line: 1112     viewrootimpl$traversalrunnable.run() line: 4474     choreographer$callbackrecord.run(long) line: 725     choreographer.docallbacks(int, long) line: 555     choreographer.doframe(long, int) line: 525     choreographer$framedisplayeventreceiver.run() line: 711     handler.handlecallback(message) line: 615     choreographer$framehandler(handler).dispatchmessage(message) line: 92     looper.loop() line: 137     activitythread.main(string[]) line: 4918     method.invokenative(object, object[], class, class[], class, int, boolean) line: not         available [native method]     method.invoke(object, object...) line: 511     zygoteinit$methodandargscaller.run() line: 1004     zygoteinit.main(string[]) line: 771     nativestart.main(string[]) line: not available [native method]     

invalidate on view chain invalidate calls parents in view hierarchy. if hardware accelerated, may invalidate depending on flag in hardwarerenderer class. optimization. can check invalidate implementation. here link relevant call - invalidate() -check hardware acceleration

to sure, can check value of hardwarerenderer.render_dirty_regions on device in application.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -