Riscrivo il codice per mio esercizio...
public class MainActivity extends Activity { OnTouchListener onTouchListener; OnDragListener onDragListener; TextView testo; Button bottone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); testo=(TextView)findViewById(R.id.textView1); bottone=(Button)findViewById(R.id.button1); onTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { DragShadowBuilder shadowBuilder=new DragShadowBuilder(v); v.startDrag(null, shadowBuilder, v, 0); return false; } }; testo.setOnTouchListener(onTouchListener); } }Ho derogato dal tutorial in quanto non ho usato nessuna variabile di tipo ClipData, e ho impostato null nel primo parametro di StartDrag.
Me l'ha accettato lo stesso, senza segnalarmi errori di sintassi.
Per il momento la variabile di tipo OnDragListener resta inutilizzata così come la variabile oggetto bottone: voglio solo testare se funziona il trascinamento.
Sì, funziona!
E' stata creata l' "ombra" della TextView che reca la scritta "Hello World".
Ora scrivo il codice che riceve il trascinamento sul Button, utilizzando le variabili dichiarate prima:
public class MainActivity extends Activity { OnTouchListener onTouchListener; OnDragListener onDragListener; TextView testo; Button bottone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); testo=(TextView)findViewById(R.id.textView1); bottone=(Button)findViewById(R.id.button1); onTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { DragShadowBuilder shadowBuilder=new DragShadowBuilder(v); v.startDrag(null, shadowBuilder, v, 0); return false; } }; onDragListener = new View.OnDragListener() { @Override public boolean onDrag(View v, DragEvent event) { if(event.getAction()==DragEvent.ACTION_DRAG_ENTERED){ Log.d("DRAGAGGIO","RICEVUTO"); } return false; } }; testo.setOnTouchListener(onTouchListener); bottone.setOnDragListener(onDragListener); } }E vediamo se al trascinamento della TextView sul primo Button viene scritto il messaggio in LogCat:
No: non funziona.
Proviamo a impostare a true onDrag():
onDragListener = new View.OnDragListener() { @Override public boolean onDrag(View v, DragEvent event) { if(event.getAction()==DragEvent.ACTION_DRAG_ENTERED){ Log.d("DRAGAGGIO","RICEVUTO"); } return true; } };e funziona:
04-12 23:46:55.145: D/DRAGAGGIO(3448): RICEVUTODevo ancora capire bene come "funzioni" il valore booleano di certe funzioni.
Nessun commento:
Posta un commento