Bonjour,
je travaille sur android actuellement et je bloque sur un point : l'appel à un constructeur de vue (avec paramètres notamment) dans mon MainActivity.
Mon constructeur s'appelle Dessine(Context context, int nbCases) et mon application fonctionne même quand je ne l'appelle pas (la ligne drawdessin =new Dessine(this,2); ne semble pas prise en compte)dans mon onCreate.
Je ne sais pas si je suis très limpide, je débute mais je voudrais pouvoir gérer la variable nombreCasesDessinees avec mon constructeur et pas avec la l'ajout dans mon onCreate des lignes suivantes "dessin=(Dessine) findViewById(R.id.draww);dessin.modifVariable(2);" (modifVariable(y) étant une méthode public de la classe Dessine qui fait this.nombreCasesDessinees =x. Ca fera plus programmation objet comme ça
Comment modifier aussi mes fichiers xml mainlayout, qui contient un spinner et ma vue fr.monpackage.Dessine, et surtout mon attr.xml qui apparaissent indispensables pour pouvoir instancier mon constructeur j'ai l'impression.
Actuellement j'ai nombreCasesDessinees=6 selon les sources ci-dessous. Je voudrais ne pas avoir une valeur statique mais dynamique issue de l'instanciation de Dessine(this,z) dans mon onCreate de mon MainActivity.
A savoir que je ne maîtrise pas la méthode init dans Dessine.java, j'ai récupéré le code. Mon attr.xml est aussi incertain ... C'est un peu mon problème. Je débute
Voici mon mainlayout.xml et attr.xml (je n'arrive pas à mettre les xml en pièces jointes):
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:comName="http://schemas.android.com/apk/res/fr.monpackage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Spinner> <fr.monpackage.Dessine android:id="@+id/draww" android:layout_width="fill_parent" android:layout_height="fill_parent" comName:one="6" /> </LinearLayout>
attr.xml :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Dessine"> <attr name="one" format="integer"/> </declare-styleable> </resources>
Je n'arrive pas à prévisualiser le message, je mets le MainActivity.java et le Dessine.java au cas où :
package fr.monpackage;
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.widget.Spinner; import android.widget.ArrayAdapter; public class MainActivity extends Activity{ Dessine drawdessin; private Spinner selecti=null; @Override protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); drawdessin =new Dessine(this,2); setContentView(R.layout.mainlayout); selecti=new Spinner(this); selecti=(Spinner) findViewById(R.id.spinner1); List<String> exemple=new ArrayList<String>(); exemple.add("1"); exemple.add("2"); ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,exemple); selecti.setAdapter(adapter); } }
Dessine.java :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 package fr.monpackage; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; public class Dessine extends View{ public int nombreCasesDessinees; Paint p=new Paint(); public Dessine (Context context){super(context);} public Dessine(Context context,int cases) { super(context); this.nombreCasesDessinees=cases; } public Dessine(Context context, AttributeSet attrs) { super(context, attrs); init(attrs); } public Dessine(Context context, AttributeSet attrs,int cases) { super(context, attrs); init(attrs); this.nombreCasesDessinees=cases; } private void init(AttributeSet attrs) { TypedArray attr = getContext().obtainStyledAttributes(attrs, R.styleable.Dessine); int tmpOne = attr.getInteger(R.styleable.Dessine_one, 0); this.nombreCasesDessinees=tmpOne; } public void modifVariable(int x) { this.nombreCasesDessinees=x; } protected void onDraw (Canvas c){ int temp=nombreCasesDessinees*20; p.setColor(Color.CYAN); c.drawLine(0,10,temp,10,p); } }
Merci!
Partager