7

私は現在1つのゲームを開発しています!フレーム レイアウトがあり、Horizo​​ntalView が 1 つ、VerticalView と AbsoluteLayout に 1 つ、Absolutelayout に ImageView があるという点で右上にあります。

現在、Horizo​​ntalView と VerticalView には画像のドレスのリストがあります。その画像をクリックすると、ドレスのドレスがAbosoluteレイアウトに追加されます..そして、imageViewには1つの漫画があります..今、そのドレスをこの漫画にドラッグアンドドロップできます

その XML コードは

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/pink_bg" >



<ListView android:id="@+id/vlistview"
    android:layout_alignParentTop="true"
    android:layout_width="60dp"
    android:layout_marginBottom="60dp"
    android:layout_height="wrap_content"
    android:scrollingCache="false"/>

<com.devsmart.android.ui.HorizontalListView
    android:id="@+id/hlistview"
    android:layout_alignParentBottom="true"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    />

<AbsoluteLayout
    android:id="@+id/frameLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="60dp"
    android:layout_marginLeft="60dp"
    android:padding="10dp" >

         <ImageView
             android:id="@+id/imgKitty"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:src="@drawable/hk1" />

</AbsoluteLayout>

今、コードは

  public class MainActivityAbs extends Activity implements OnClickListener, OnTouchListener {
int images1[], images2[];
static int imgKittyNo = 0;
static int kittyStatus = 0;
int[] kitties;
ImageView imgKitty;
ImageView mKittyDress;
private AbsoluteLayout mKittyBGLayer;
ArrayList<ImageView> mArrayList = new ArrayList<ImageView>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    kitties = new int[] { R.drawable.hk1, R.drawable.hk2, R.drawable.hk3, R.drawable.hk4, R.drawable.hk5 };

    images1 = new int[] { R.drawable.hk_a1, R.drawable.hk_a2, R.drawable.hk_a3, R.drawable.hk_a4, R.drawable.hk_a5, R.drawable.hk_a6,
            R.drawable.hk_a7, R.drawable.hk_a8, R.drawable.hk_dress, R.drawable.hk_dress, R.drawable.hk_dress2, R.drawable.hk_dress3,
            R.drawable.hk_dress4, R.drawable.hk_dress5, R.drawable.hk_dress6, R.drawable.hk_dress7, R.drawable.hk_dress8, R.drawable.hk_dress9,
            R.drawable.hk_dress10, R.drawable.hk_dress11, R.drawable.hk_dress12, R.drawable.hk_dress13, R.drawable.hk_dress14,
            R.drawable.hk_dress15, R.drawable.hk_dress16, R.drawable.hk_dress17, R.drawable.hk_dress18, R.drawable.hk_dress19,
            R.drawable.hk_dress20, R.drawable.hk_dress21 };

    images2 = new int[] { R.drawable.hk_flo, R.drawable.hk_flo2, R.drawable.hk_glasses, R.drawable.hk_glasses2, R.drawable.hk_glasses3,
            R.drawable.hk_hair1, R.drawable.hk_hair2, R.drawable.hk_hair3, R.drawable.hk_hair4, R.drawable.hk_hair5, R.drawable.hk_hat1,
            R.drawable.hk_hat2, R.drawable.hk_hat3, R.drawable.hk_hat4, R.drawable.hk_hat5, R.drawable.hk_hat6, R.drawable.hk_ribon1,
            R.drawable.hk_ribon2, R.drawable.hk_ribon3, R.drawable.hk_ribon4, R.drawable.hk_ribon5, R.drawable.hk_ribon6, R.drawable.hk_ribon7,
            R.drawable.hk_ribon8, R.drawable.hk_ribon9, R.drawable.hk_ribon10, R.drawable.hk_ring, R.drawable.hk_glasses, R.drawable.hk_glasses2,
            R.drawable.hk_glasses3 };

    ListView vListView = (ListView) findViewById(R.id.vlistview);
    vListView.setAdapter(new VAdapter(this));

    HorizontalListView hListView = (HorizontalListView) findViewById(R.id.hlistview);
    hListView.setAdapter(new HAdapter(this));
    imgKitty = (ImageView) findViewById(R.id.imgKitty);
    // imgKitty.setOnClickListener(this);
    mKittyBGLayer = (AbsoluteLayout) findViewById(R.id.frameLayout);
    setupViews(kitties[0]);


    vListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            setupViews(images2[arg2]);
        }

    });

    hListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            setupViews(images1[arg2]);
        }

    });

    /*imgKitty.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("ImgKitty is called");
        }
    });*/
    mKittyBGLayer.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            for (ImageView img1 : mArrayList) {
                if (kittyStatus == img1.getId()) {
                    mKittyDress = img1;
                    break;
                }
            }
            if(mKittyDress!=null) {
            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, (int) event.getX() - mKittyDress.getWidth()
                    / 2, (int) event.getY() - mKittyDress.getHeight() / 2);
            mKittyDress.setLayoutParams(lp);
            }
            return true;
        }
    });

    final ImageView imgClearAll = (ImageView)findViewById(R.id.imgClearAll);
    imgClearAll.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(mKittyBGLayer!=null && mArrayList!=null)
            {
                mKittyBGLayer.removeAllViews();
                mKittyBGLayer.addView(imgKitty);
                mArrayList.clear();
            }

        }
    });

}

@Override
public boolean onTouch(View v, MotionEvent event) {
    boolean isKitty = false;
    for (int i = 0; i < kitties.length; i++) {
        if (v.getId() == kitties[i]) {
            isKitty =true;
        }
    }
    if(!isKitty)
        kittyStatus = v.getId();
    return false;
}

private void setupViews(int args) {

    if (args == R.drawable.hk1 || args == R.drawable.hk2 || args == R.drawable.hk3 || args == R.drawable.hk4 || args == R.drawable.hk5
            || args == R.drawable.hk6) {
        imgKitty.setImageResource(args);
    } else {

        mKittyDress = new ImageView(this);
        mKittyDress.setImageResource(args);
        mKittyDress.setId(imgKittyNo++);
        mKittyDress.setOnTouchListener(MainActivityAbs.this);
        mArrayList.add(mKittyDress);
        mKittyBGLayer.addView(mKittyDress);
    }

}


private class HAdapter extends BaseAdapter {

    private Context context;
    LayoutInflater inflater;

    public HAdapter(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return images1.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        HViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listinflate, null);
            holder = new HViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (HViewHolder) convertView.getTag();
        }
        holder.img = (ImageView) convertView.findViewById(R.id.image);
        holder.img.setImageResource(images1[position]);
        return convertView;
    }

}

class HViewHolder {
    ImageView img;
}



private class VAdapter extends BaseAdapter {

    private Context context;
    LayoutInflater inflater;

    public VAdapter(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return images2.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listinflate, null);
            holder = new ViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.img = (ImageView) convertView.findViewById(R.id.image);
        holder.img.setImageResource(images2[position]);

        return convertView;
    }

}

class ViewHolder {
    ImageView img;
}

@Override
public void onClick(View v) {
     }

上記のコードですべてが正常に完了しましたが、男の子のトップ|右の画像をクリックすると、画像も変更される必要がある場合、その男の子をクリックすると変更される必要がある別の種類の男の子があることを意味します.. . 私はたくさん試しましたが、それを得ることができませんでした。

4

1 に答える 1

2

次の投稿を確認してください。

また、その他の質問: Android で画像をドラッグ アンド ドロップする

最後に、API レベル >= 11 のアプリを作成している場合は、これを使用する必要があります: Drag and Drop Android Page

しかし、まず第一に、覚えておいてください:AbsoluteLayout

于 2012-10-11T19:45:39.290 に答える