- Forum-Beiträge: 12
10.04.2014, 20:50:50 via Website
10.04.2014 20:50:50 via Website
Ich habe eine Klasse myQuads die einige Quadrate deffiniert. Wenn ich das Quadrat anklicke wird myQuad.hasPicture = 1 gesetzt und mit printKlickedQuads() wird an deren position ein Bild erstellt.
Ich habe zusätzlicheinen Bereich deffiniert und wenn ich ausserhalb dieses Bereichs auf ein Quadrat klicke wird myQuad.hasPicture = 1 auch gesetzt nur soll dann kein Bild an dessen Position erstellt werden.
Hier mal der Code:
2 public void printKlickedQuads(Canvas canvas)
3 {
4// Löschen aller ImageViews im Layout
5 if(ViewHasChanged == 1)
6 {
7 for(int j = 0;j<quadHasElements;j++)
8 {
9 if(myQuads[j].hasPicture == 1)
10 {
11 Layout.removeView(Layout.findViewById(myQuads[j].QuadNr));
12 }
13 }
14 ViewHasPictures = 0;
15 ViewHasChanged = 0;
16 }
17
18
19 for(int p=0;p<quadHasElements;p++)
20 {
21 if(myQuads[p].hasPicture==1)
22 {
23 if(myQuads[p].P1X >= ZoomBereichx && myQuads[p].P3X <= (ZoomBereichx+400) && myQuads[p].P4Y <= (ZoomBereichy+240) && myQuads[p].P2Y >= ZoomBereichy)
24 {
25
26
27 if(Layout.findViewById(myQuads[p].QuadNr) == null)
28 {
29 ImageView b = new ImageView(mycontext);
30 b = RotateAndSetImageViewZoomLvl1(((myQuads[p].P1X*2)-(ZoomBereichx*2)),(((myQuads[p].P1Y)*2)-(ZoomBereichy*2)-20));
31 b.setId(myQuads[p].QuadNr);
32 Layout.addView(b);
33 ViewHasPictures++;
34
35 }
36 }
37 }
38
39 }
40
41 }
42
43
44
45
46 @SuppressLint("NewApi")
47 public ImageView RotateAndSetImageViewZoomLvl1(int x, int y)
48 {
49 ImageView Im = new ImageView(mycontext);
50 Im.setImageResource(R.drawable.test1bild);
51
52
53 LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(40,40);
54 Im.setLayoutParams(parms);
55
56 //Rotieren
57
58 Bitmap bMap;
59 bMap = BitmapFactory.decodeResource(getResources(), R.drawable.test1bild);
60 Matrix matrix = new Matrix();
61 matrix.postRotate(45);
62 Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true);
63 Im.setImageBitmap(bMapRotate);
64 Im.setX(x);
65 Im.setY(y);
66 return Im;
67 }
Mein Problem ist jetzt wenn ich ausserhalb des Bereichs ein myQuad.hasPicture == 1 habe geht er richtig über die
204-10 19:52:47.405: E/AndroidRuntime(15668): java.lang.NullPointerException
304-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2916)
404-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12447)
504-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12555)
604-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2920)
704-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12447)
804-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12555)
904-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2920)
1004-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12447)
1104-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12555)
1204-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2920)
1304-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12447)
1404-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.View.getDisplayList(View.java:12555)
1504-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1144)
1604-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2270)
1704-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2142)
1804-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1953)
1904-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110)
2004-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4484)
2104-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
2204-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
2304-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.Choreographer.doFrame(Choreographer.java:525)
2404-10 19:52:47.405: E/AndroidRuntime(15668): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
2504-10 19:52:47.405: E/AndroidRuntime(15668): at android.os.Handler.handleCallback(Handler.java:615)
2604-10 19:52:47.405: E/AndroidRuntime(15668): at android.os.Handler.dispatchMessage(Handler.java:92)
2704-10 19:52:47.405: E/AndroidRuntime(15668): at android.os.Looper.loop(Looper.java:137)
2804-10 19:52:47.405: E/AndroidRuntime(15668): at android.app.ActivityThread.main(ActivityThread.java:4856)
2904-10 19:52:47.405: E/AndroidRuntime(15668): at java.lang.reflect.Method.invokeNative(Native Method)
3004-10 19:52:47.405: E/AndroidRuntime(15668): at java.lang.reflect.Method.invoke(Method.java:511)
3104-10 19:52:47.405: E/AndroidRuntime(15668): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
3204-10 19:52:47.405: E/AndroidRuntime(15668): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
3304-10 19:52:47.405: E/AndroidRuntime(15668): at dalvik.system.NativeStart.main(Native Method)
Es muss am hinzu/entfernen der Views liegen! (Habs mit einem Punkt zeichnen stat einen ImageView getestest da funktioniert es)
Mache ich dabei etwas Falsch bzw. hat jemand eine Idee was mein Fehler sein könnte ?
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.