Перемещение вида из одного вида сетки в другой в Android - PullRequest
0 голосов
/ 30 сентября 2011

Я пытаюсь написать приложение, которое имеет 2 вида сетки. Виды сетки расположены рядом на одном экране. Я заполняю левый вид сетки установленными в данный момент приложениями и использую их значки, поэтому в основном у меня есть вид сетки изображений. Действие передает массив Drawables в ImageAdapter. ImageAdapter расширяет BaseAdapter и реализует OnTouchListener. Мой метод getView () похож на метод, найденный на сайте разработчиков Android

// create a new ImageView for each item referenced by the Adapter    
public View getView(int position, View convertView, ViewGroup parent) 
{        
    ImageView imageView;

    if (convertView == null) 
    {  
        // if it's not recycled, initialize some attributes            
        imageView = new ImageView(mContext);            
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85));            
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);            
        imageView.setPadding(6, 6, 6, 6);        
    } 
    else 
    {            
        imageView = (ImageView) convertView;        
    }        

    //imageView.setImageResource(mThumbIds[position]);        
    imageView.setImageDrawable(mList.get(position));
    imageView.setContentDescription(mNames.get(position));
    imageView.setDrawingCacheEnabled(true);
    imageView.setOnTouchListener(this);

    return imageView;

}

А вот и мое касание. Я следовал другим примерам, но мой сценарий не предполагает использование AbsoluteLayout, и он использует уровень API 8, поэтому я не могу реализовать OnDragListener: (

public boolean onTouch(View v, MotionEvent event) {

LayoutParams par = (LayoutParams) v.getLayoutParams();
int x = (int) event.getX();
int y = (int) event.getY();

    if (event.getAction() == MotionEvent.ACTION_DOWN)
    {
        Log.i("ACT DOWN",  (String) v.getContentDescription());
        status = START_DRAGGING;
        v.setLayoutParams(par);

        //image = new ImageView(mContext);
        //mLayout.addView(image, par);
        //Toast.makeText(AppMoverActivity.this, "" + v.getContentDescription(), Toast.LENGTH_SHORT).show();
    }
    if (event.getAction() == MotionEvent.ACTION_UP) {
        status = STOP_DRAGGING;
        v.setLayoutParams(par); 

        Log.i("ACT UP", "Stopped Dragging");
    }
    else if (event.getAction() == MotionEvent.ACTION_MOVE) {
        if (status == START_DRAGGING) {
            Log.i("ACT MOVE", "Moving");
            //Implement ability to drag the view to other grid...
        }
    }
    return true;

}

Могу ли я в любом случае сделать эту работу или мне нужно изменить способ, которым я подхожу к этому? Любая помощь приветствуется!

1 Ответ

0 голосов
/ 26 марта 2012

Этот урок, кажется, описывает то, что вы хотите: http://blahti.wordpress.com/2011/10/03/drag-drop-for-android-gridview/

...