Я пытаюсь написать приложение, которое имеет 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;
}
Могу ли я в любом случае сделать эту работу или мне нужно изменить способ, которым я подхожу к этому? Любая помощь приветствуется!