[Android] Quelques éclaircissements sur les SurfaceView
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

[Android] Quelques éclaircissements sur les SurfaceView



  1. #1
    sandrecarpe

    [Android] Quelques éclaircissements sur les SurfaceView


    ------

    Bonjour à tous, je commence à découvrir comment dessiner sur Android avec les SurfaceView. Mais j'ai besoin de quelques éclaircissements concernant la méthode onDraw(Canvas canvas)
    Je sais qu'elle redessine les pixels en boucle. Mais par exemple, comment dessiner quelque chose seulement lorsque'un événement ce produit, comme un click ? Ainsi qu'animer ce qu'on vient de dessiner

    voici mon onDraw() :

    Code:
    	protected void onDraw(Canvas canvas)
    	{
    		canvas.drawColor(Color.WHITE);
    		
    		mPaint.setColor(Color.GRAY);
    		canvas.drawRect(barreScroll(canvas.getHeight()), mPaint); // on dessine la barre de scroll
    		
    		mPaint.setColor(Color.BLUE);
    		
    		
    		mPaint.setAlpha(100);
    		
    				
    		float coordX[] = new float[mListTracesX.size()];
    		float coordY[] = new float[mListTracesY.size()];
    		
    		for(int i = 0; i < mListTracesX.size(); i++)
    			coordX[i] = mListTracesX.get(i);
    		for(int i = 0; i < mListTracesY.size(); i++)
    			coordY[i] = mListTracesY.get(i);
    				
    		for(int i = 0; i < mListTracesX.size(); i++)
    		{
    			canvas.drawCircle(coordX[i], coordY[i], i, mPaint);
    		}
    		
    		
    		super.onDraw(canvas);
    	}
    Lorsque je passe mon doigt sur l'écran, je laisse une trace formée par des drawCircle(). Je voudrais par exemple, effacer ces traces progressivement lorsque je relâche mon doigt, mais je ne vois pas du tout comment implémenter cela.

    Merci de votre aide

    -----

  2. #2
    sandrecarpe

    Re : [Android] Quelques éclaircissements sur les SurfaceView

    Finalement j'ai opté pour la solution d'étendre de la classe View pour écrire dessus afin de gérer les évenements, voici comment je fais :

    main_activity.xml
    Code:
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="0dp"
        tools:context=".MainActivity" >
    
         <View
            class="com.anthony.turpin.androidpad.Draw"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
    		android:id="@+id/zoneSouris"
    		android:background="#DDDDDD"/>
    	
        
        <RelativeLayout
            android:layout_width="25dp"
            android:layout_height="fill_parent"
            android:background="#888888"
            android:layout_alignLeft="@id/zoneSouris"
            android:id="@+id/zoneScrollVertical"/>
    
    </RelativeLayout>

    et mon onCreate()

    Code:
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		
    		setContentView(R.layout.main_activity);
    		Draw mDraw = (Draw) this.findViewById(R.id.zoneSouris);
    		
    	}
    Mias j'ai une classCastException...J'ai suivis deux cours sur internet qui le font de cette façon, alors qu'est ce qui ne va pas?

  3. #3
    bisou10

    Re : [Android] Quelques éclaircissements sur les SurfaceView

    Tu déclares un Draw alors que c'est une View. Je ne sais pas qui hérite de qui (et donc si Draw n'est pas dérivé de View), mais c'est sans doute là ta CastException.

  4. #4
    sandrecarpe

    Re : [Android] Quelques éclaircissements sur les SurfaceView

    Salut, merci pour ta réponse. Ma classe Draw hérite de View. J'ai regardé plusieurs codes sur internet et j'ai trouvé une solution qui fonctionne. Voilà par quoi j'ai remplacé la balise View :
    Code:
         <com.anthony.turpin.androidpad.Draw
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
    		android:id="@+id/zoneSouris"
    		android:background="#DDDDDD"/>

    Je me demande toujours comment animer ce que l'on dessine dans la méthode onDraw(Canvas canvas)
    Puis, j'aimerais dessiner une trace au passage de mon doigt sur l'écran et qui s'efface progressivement. Un peu comme l'option du clavier "glisser pour écrire". J'ai vu du côté de Path mais ce n'est pas ce que je cherche

    Merci de votre aide
    Dernière modification par sandrecarpe ; 21/08/2014 à 20h11.

  5. A voir en vidéo sur Futura
  6. #5
    bisou10

    Re : [Android] Quelques éclaircissements sur les SurfaceView

    j'ai jamais bossé avec les events onDraw(), mais tu ne peux pas utiliser le classique onTouchListener() sur ton Draw ?

  7. #6
    sandrecarpe

    Re : [Android] Quelques éclaircissements sur les SurfaceView

    Si si je peux, j'ai trouvé la solution finalement.
    Par contre je ne sais toujours pas comment dessiner le passage de mon doigt. Est-ce que vous voyez ce je veux dire ?
    Quelque chose comme ça :
    Nom : demo1.jpg
Affichages : 39
Taille : 66,1 Ko

    Merci de votre aide

Discussions similaires

  1. [Evolution] Reptiles ou sauropsides ? Quelques éclaircissements !
    Par Skoll dans le forum Biologie
    Réponses: 3
    Dernier message: 08/11/2012, 23h55
  2. Tpe 1er S besoin de quelques éclaircissements
    Par invite45c0b0aa dans le forum TPE / TIPE et autres travaux
    Réponses: 2
    Dernier message: 13/10/2008, 21h29
  3. Moteurs linéaires : quelques éclaircissements.
    Par invite7631eac3 dans le forum Physique
    Réponses: 1
    Dernier message: 19/05/2008, 01h41
  4. Grippe aviaire, eclaircissements...
    Par Vin'Z dans le forum Santé et médecine générale
    Réponses: 13
    Dernier message: 02/11/2005, 15h49
  5. Eclaircissements sur quelques notions de MQ
    Par BioBen dans le forum Physique
    Réponses: 4
    Dernier message: 02/01/2005, 10h37