Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Como selecionar so uma área das 6 áreas que tenho.

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.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário