Je rencontre un problème avec canvas.clipPath() dans quelques périphériques. Il fonctionne bien dans l'émulateur et certains appareils haut de gamme comme la tablette MotoG et Nexus. Mais quand j'ai testé dans mes amis téléphone portable la vue Square que j'ajoute n'est pas ajoutée et l'application se bloque en donnant l'erreur ci-dessous.canvas.clipPath() ne fonctionne pas dans quelques périphériques
J'ai essayé le soln de cette question Android UnsupportedOperationException at Canvas.clipPath lorsque j'ajoute l'instruction if comme indiqué dans les ans de cette question, la vue carrée n'est pas ajoutée dans mes autres appareils (MotoG et nexus). Donc je ne peux pas utiliser ce soln dans mon cas.
Cependant la vue carrée est ajoutée dans mon téléphone portable d'amis si je commente juste canvas.clipPath(); mais comme prévu, peu de mes fonctionnalités ne fonctionnent pas. Comment dois-je résoudre ce problème. Veuillez nous conseiller Merci d'avance :)
05-07 11:45:54.656: E/AndroidRuntime(5997): FATAL EXCEPTION: main
05-07 11:45:54.656: E/AndroidRuntime(5997): java.lang.UnsupportedOperationException
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:429)
05-07 11:45:54.656: E/AndroidRuntime(5997): at example.Square.addText(Square.java:260)
05-07 11:45:54.656: E/AndroidRuntime(5997): at example.Square.onDraw(Square.java:140)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.draw(View.java:11054)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10493)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.drawChild(ViewGroup.java:2958)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2596)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.draw(View.java:11057)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10493)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.drawChild(ViewGroup.java:2958)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2596)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.draw(View.java:11057)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10493)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.drawChild(ViewGroup.java:2958)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2596)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10491)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.drawChild(ViewGroup.java:2958)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2596)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10491)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.drawChild(ViewGroup.java:2958)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2596)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.draw(View.java:11057)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.widget.FrameLayout.draw(FrameLayout.java:463)
05-07 11:45:54.656: E/AndroidRuntime(5997): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2145)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.View.getDisplayList(View.java:10493)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:880)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewRootImpl.draw(ViewRootImpl.java:1911)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1635)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2455)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.os.Looper.loop(Looper.java:137)
05-07 11:45:54.656: E/AndroidRuntime(5997): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-07 11:45:54.656: E/AndroidRuntime(5997): at java.lang.reflect.Method.invokeNative(Native Method)
05-07 11:45:54.656: E/AndroidRuntime(5997): at java.lang.reflect.Method.invoke(Method.java:511)
05-07 11:45:54.656: E/AndroidRuntime(5997): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
05-07 11:45:54.656: E/AndroidRuntime(5997): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
05-07 11:45:54.656: E/AndroidRuntime(5997): at dalvik.system.NativeStart.main(Native Method)
J'obtiens l'erreur dans cette fonction de ma vue sur la place de classe J'appelle cette fonction à l'intérieur de ma méthode onDraw passer sa toile.
private void addText(Canvas canvas){
//setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//Setting text
canvas.clipPath(path);
bitmapWidth = right+x+ mWidth;
bitmapHeight = bottom+y+mHeight;
if(bitmapWidth <= 10){
bitmapWidth = 10;
}
if(bitmapHeight <= 10){
bitmapHeight = 10;
}
bitMap1 = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
Canvas canvas1 = new Canvas(bitMap1);
tp.setColor(textColor);
txtWidth = (right+x+ mWidth)-(left+x);
txtHeight = (bottom+y+mHeight)-(top+y);
if(left+x < 0){
txtWidth = (right+x+ mWidth);
}
if(top+y < 0){
txtHeight = (bottom+y+mHeight);
}
pdl = new PlacableDynamicLayout(string,tp,txtWidth, txtHeight,Alignment.ALIGN_CENTER,1.0f,1.0f,false,Anchor.ANCHOR_TOP,1);
pdl.draw(canvas1);
canvas.drawBitmap(bitMap1, (left+x), (top+y) , paint);
}
Où est votre code? – GrIsHu
@GrIsHu j'ai ajouté la fonction qui donnait l'erreur le canvas.clipPath donnait une erreur à l'intérieur de cette fonction – ik024