Olá Leandro.
-- Vc esta certo sobre o problema de área x e área y.
Mas tentei realizar a sua logica de negócios mas não tive sucesso ou não consegui realizar.. estou perdido...
o código fonte ficou assim
package com.amarante.autista;
import java.util.HashMap;
import java.util.Map;
import android.support.v7.app.AppCompatActivity;
import android.text.method.ScrollingMovementMethod;
import android.content.ClipData;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.OnDragListener;
import android.view.View.OnLongClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
LinearLayout area1, area2, area3, area4, area5, area6;
TextView prompt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
area1 = (LinearLayout) findViewById(R.id.area1);
area2 = (LinearLayout) findViewById(R.id.area2);
area3 = (LinearLayout) findViewById(R.id.area3);
area4 = (LinearLayout) findViewById(R.id.area4);
area5 = (LinearLayout) findViewById(R.id.area5);
area6 = (LinearLayout) findViewById(R.id.area6);
prompt = (TextView) findViewById(R.id.prompt);
// make TextView scrollable
prompt.setMovementMethod(new ScrollingMovementMethod());
//clear prompt area if LongClick
prompt.setOnLongClickListener(new OnLongClickListener(){
@Override
public boolean onLongClick(View v) {
prompt.setText("");
return true;
}});
TypedArray arrayResources = getResources().obtainTypedArray(
R.array.resicon);
for (int i = 0; i < arrayResources.length(); i++) {
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(arrayResources.getDrawable(i));
imageView.setOnLongClickListener(myOnLongClickListener);
area4.addView(imageView);
//area5.addView(imageView);
//area6.addView(imageView);
}
for (int i = 0; i < arrayResources.length(); i++) {
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(arrayResources.getDrawable(i));
imageView.setOnLongClickListener(myOnLongClickListener);
//area4.addView(imageView);
area5.addView(imageView);
//area6.addView(imageView);
}
for (int i = 0; i < arrayResources.length(); i++) {
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(arrayResources.getDrawable(i));
imageView.setOnLongClickListener(myOnLongClickListener);
//area4.addView(imageView);
//area5.addView(imageView);
area6.addView(imageView);
}
arrayResources.recycle();
area1.setOnDragListener(myOnDragListener);
area2.setOnDragListener(myOnDragListener);
area3.setOnDragListener(myOnDragListener);
area4.setOnDragListener(myOnDragListener);
area5.setOnDragListener(myOnDragListener);
area6.setOnDragListener(myOnDragListener);
}
OnLongClickListener myOnLongClickListener = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
//v.setVisibility(View.INVISIBLE);
//v.startDragAndDrop(data, shadowBuilder, v, 0);
return true;
}
};
OnDragListener myOnDragListener = new OnDragListener() {
// Defina variáveis para guardar a view de origem e de destino
View from;
View to;
private boolean checkIfDropIsOK() {
// o fromTo fica em vermelho
View possibleFrom = fromTo.get(to);
return from.equals(possibleFrom);
}
// Mantenha um mapa com os casos possíveis
// o a Map<View> esta pedindo 2 argumentos
Map<View> fromTo = new HashMap<View, View>();
// o put fica em vermelho dizendo que não consegue resolver o symbolo put
fromTo.put(area5, area2);
fromTo.put(area4, area1);
fromTo.put(area6, area3);
@Override
public boolean onDrag(View v, DragEvent event) {
final int action = event.getAction();
String area;
if (v == area1){
area = "area1";
}else if (v == area2){
area = "area2";
}else if (v == area3){
area = "area3";
}else if (v == area4){
area = "area4";
}else if (v == area5){
area = "area5";
}else if (v == area6){
area = "area6";
}else {
area = "unknown";
}
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
prompt.append("ACTION_DRAG_STARTED: " + area + "\n");
from = v;
break;
case DragEvent.ACTION_DRAG_ENTERED:
prompt.append("ACTION_DRAG_ENTERED: " + area + "\n");
break;
case DragEvent.ACTION_DRAG_EXITED:
prompt.append("ACTION_DRAG_EXITED: " + area + "\n");
break;
case DragEvent.ACTION_DROP:
to = v;
boolean dropOk = checkIfDropIsOK();
if (dropOk){
prompt.append("ACTION_DROP_2: " + area + "\n");
View view = (View)event.getLocalState();
LinearLayout oldParent = (LinearLayout)view.getParent();
oldParent.removeView(view);
LinearLayout newParent = (LinearLayout)v;
newParent.addView(view);
}else{
// nao tenho certeza
return false;}
break;
case DragEvent.ACTION_DRAG_ENDED:
prompt.append("ACTION_DRAG_ENDED: " + area + "\n");
default:
break;
}
return true;
}
};
}
Grato pela ajuda.
mas estou sem saída.
Att.
Luciano.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.






0 comentários:
Postar um comentário