Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Android - Cambiare colore per disegnare su schermo
Forum - Android - Cambiare colore per disegnare su schermo

Avatar
Bruce2000 (Normal User)
Newbie


Messaggi: 1
Iscritto: 19/10/2013

Segnala al moderatore
Postato alle 12:44
Sabato, 19/10/2013
Salve a tutti, non riesco a cambiare il colore per disegnare sullo schermo.
Mi potreste aiutare? Grazie.
Ho usato il color picker AmbilWarna.

Questo è il codice che ho usato:

L'Activity
Codice sorgente - presumibilmente Java

  1. import yuku.ambilwarna.AmbilWarnaDialog;
  2. import yuku.ambilwarna.AmbilWarnaDialog.OnAmbilWarnaListener;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import android.widget.Toast;
  8. import android.app.Activity;
  9. import android.graphics.Color;
  10.  
  11. public class MainActivity extends Activity
  12. {
  13.     public int initialColor = 0xffff0000;
  14.     Button colorPicker;
  15.     public int r = 255, g = 0, b = 0;
  16.    
  17.     //Identificatore delle preferenze dell'applicazione
  18.     public static String MY_PREFERENCES = "MyPref";
  19.    
  20.         @Override
  21.         protected void onCreate(Bundle savedInstanceState)
  22.         {
  23.                 super.onCreate(savedInstanceState);
  24.                 setContentView(R.layout.activity_main);        
  25.                
  26.                 //Ottiene il riferimento al bottone
  27.                 this.colorPicker = (Button)findViewById(R.id.btnColorPicker);
  28.                
  29.                 //Definisce il click event listener per il bottone
  30.         OnClickListener clickListener = new OnClickListener()
  31.         {
  32.             @Override
  33.             public void onClick(View v)
  34.             {
  35.                 colorpicker();
  36.             }
  37.         };
  38.  
  39.         //Setta il click event listener per il bottone
  40.         this.colorPicker.setOnClickListener(clickListener);
  41.         }
  42.        
  43.         public void colorpicker()
  44.         {
  45.         //initialColor è il colore iniziale selezionato mostrato nel rettangolo alla sinistra della freccia
  46.         AmbilWarnaDialog dialog = new AmbilWarnaDialog(this, this.initialColor, new OnAmbilWarnaListener()
  47.         {
  48.                 //Eseguita quando l'utente clicca il bottone Ok
  49.                 //color è il colore selezionato dall'utente
  50.             @Override
  51.             public void onOk(AmbilWarnaDialog dialog, int color)
  52.             {
  53.                 //Setta il colore iniziale al colore scelto dall'utente
  54.                 initialColor = color;
  55.                
  56.                 r = Color.red(initialColor);
  57.                 g = Color.green(initialColor);
  58.                 b = Color.blue(initialColor);
  59.                
  60.                 Toast.makeText(getBaseContext(), "Selected Color: " + Color.red(initialColor) + ", " + Color.green(initialColor) + ", " + Color.blue(initialColor), Toast.LENGTH_LONG).show();                 
  61.             }
  62.            
  63.             //Eseguita quando l'utente clicca il bottone Cancel
  64.             @Override
  65.             public void onCancel(AmbilWarnaDialog dialog)
  66.             {
  67.                
  68.             }
  69.         });
  70.        
  71.         //Mostra il colorpicker
  72.         dialog.show();
  73.     }
  74. }



La View
Codice sorgente - presumibilmente Java

  1. import java.util.ArrayList;
  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.Color;
  5. import android.graphics.Paint;
  6. import android.graphics.Path;
  7. import android.graphics.RectF;
  8. import android.util.AttributeSet;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11.  
  12. public class MultitouchView extends View
  13. {
  14.         public static final int MAX_FINGERS = 5;
  15.     private Path[] mFingerPaths = new Path[MAX_FINGERS];
  16.     private Paint mFingerPaint;
  17.     private ArrayList<Path> mCompletedPaths;
  18.     private RectF mPathBounds = new RectF();
  19.    
  20.     public MultitouchView(Context context)
  21.     {
  22.         super(context);
  23.     }
  24.  
  25.     public MultitouchView(Context context, AttributeSet attrs)
  26.     {
  27.         super(context, attrs);
  28.     }
  29.  
  30.     public MultitouchView(Context context, AttributeSet attrs, int defStyle)
  31.     {
  32.         super(context, attrs, defStyle);
  33.     }
  34.  
  35.     @Override
  36.     protected void onAttachedToWindow()
  37.     {
  38.         super.onAttachedToWindow();
  39.        
  40.         MainActivity color = new MainActivity();
  41.        
  42.         mCompletedPaths = new ArrayList<Path>();
  43.         mFingerPaint = new Paint();
  44.         mFingerPaint.setAntiAlias(true);
  45.         mFingerPaint.setColor(Color.rgb(color.r, color.g, color.b));
  46.         mFingerPaint.setStyle(Paint.Style.STROKE);
  47.         mFingerPaint.setStrokeWidth(6);
  48.         mFingerPaint.setStrokeCap(Paint.Cap.BUTT);
  49.     }
  50.  
  51.     @Override
  52.     protected void onDraw(Canvas canvas)
  53.     {
  54.         super.onDraw(canvas);
  55.  
  56.         for (Path completedPath : mCompletedPaths)
  57.         {
  58.             canvas.drawPath(completedPath, mFingerPaint);
  59.         }
  60.  
  61.         for (Path fingerPath : mFingerPaths)
  62.         {
  63.             if (fingerPath != null)
  64.             {
  65.                 canvas.drawPath(fingerPath, mFingerPaint);
  66.             }
  67.         }
  68.     }
  69.  
  70.     @Override
  71.     public boolean onTouchEvent(MotionEvent event)
  72.     {
  73.         int pointerCount = event.getPointerCount();
  74.         int cappedPointerCount = pointerCount > MAX_FINGERS ? MAX_FINGERS : pointerCount;
  75.         int actionIndex = event.getActionIndex();
  76.         int action = event.getActionMasked();
  77.         int id = event.getPointerId(actionIndex);
  78.  
  79.         if ((action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) && id < MAX_FINGERS)
  80.         {
  81.             mFingerPaths[id] = new Path();
  82.             mFingerPaths[id].moveTo(event.getX(actionIndex), event.getY(actionIndex));
  83.         }
  84.         else if ((action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_UP) && id < MAX_FINGERS)
  85.         {
  86.             mFingerPaths[id].setLastPoint(event.getX(actionIndex), event.getY(actionIndex));
  87.             mCompletedPaths.add(mFingerPaths[id]);
  88.             mFingerPaths[id].computeBounds(mPathBounds, true);
  89.             invalidate((int) mPathBounds.left, (int) mPathBounds.top,
  90.                     (int) mPathBounds.right, (int) mPathBounds.bottom);
  91.             mFingerPaths[id] = null;
  92.         }
  93.  
  94.         for(int i = 0; i < cappedPointerCount; i++)
  95.         {
  96.             if(mFingerPaths[i] != null)
  97.             {
  98.                 int index = event.findPointerIndex(i);
  99.                 mFingerPaths[i].lineTo(event.getX(index), event.getY(index));
  100.                 mFingerPaths[i].computeBounds(mPathBounds, true);
  101.                 invalidate((int) mPathBounds.left, (int) mPathBounds.top,
  102.                         (int) mPathBounds.right, (int) mPathBounds.bottom);
  103.             }
  104.         }
  105.  
  106.         return true;
  107.     }
  108. }


PM Quote
Avatar
hackfrank (Normal User)
Rookie


Messaggi: 35
Iscritto: 19/06/2014

Segnala al moderatore
Postato alle 16:10
Lunedì, 11/08/2014
che ti sei fumato? tu sei un programmatore? guarda che niente e impossibile nel mondo del informatica non credo che io o altri ti daremo il codice,se sei un programmatore devi fare da solo e tentare ritentare il tutto e per tutto senza arrenderti mai! solo cosi puoi creare uno o più programmi, lo so e difficile ma e l'unico modo,per creare un programma simile devi sperimentare,impegnarti al massimo! credi che bill gates e steve jobs hanno creato apple e windows dal nulla? ci vuole tanto tempo e pazienza,solo cosi potrai creare un qualsiasi software compreso quello che ce nella tua domanda

PM Quote
Avatar
dnha (Member)
Pro


Messaggi: 137
Iscritto: 24/07/2014

Segnala al moderatore
Postato alle 16:27
Lunedì, 11/08/2014
Testo quotato

Postato originariamente da hackfrank:

che ti sei fumato?



:nono:
Vedi di non insultare gli altri utenti che non è difficile segnalare il post al moderatore!

@Bruce2000
Mi dispiace non so aiutarti: non programmo per Android... :)

PM Quote
Avatar
hackfrank (Normal User)
Rookie


Messaggi: 35
Iscritto: 19/06/2014

Segnala al moderatore
Postato alle 19:41
Lunedì, 11/08/2014
scusa,capisco il fraindentimento,io non voglio insultare gli altri utenti,e poi nessuno e perfetto,sto solo dicendo che puo fare tutto e per tutto,puo sperimentare che so, potrebbe anche scoprire segreti che noi non sappiamo per adesso

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 1:04
Mercoledì, 13/08/2014
hackfrank ... anche questo è un thread di fine 2013 ... perché continui a postare in thread vecchi?

Dopo avertelo detto più e più volte non so cosa pensare ...

Ultima modifica effettuata da nessuno il 13/08/2014 alle 9:28


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
dnha (Member)
Pro


Messaggi: 137
Iscritto: 24/07/2014

Segnala al moderatore
Postato alle 9:40
Mercoledì, 13/08/2014
Oops, non l'avevo notato neanche io :rotfl:

PM Quote
Avatar
hackfrank (Normal User)
Rookie


Messaggi: 35
Iscritto: 19/06/2014

Segnala al moderatore
Postato alle 15:39
Giovedì, 14/08/2014
neanche io lho avevo notato

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:39
Giovedì, 14/08/2014
Testo quotato

Postato originariamente da hackfrank:

neanche io lho avevo notato  



Veramente in quasi tutti i tuoi messaggi ti ho detto che avevi risposto a thread vecchi ...

O non leggi quello che ti si scrive o fai solo finta ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote