簡體   English   中英

相對於觸摸位置,將圖像添加到android中的觸摸布局

[英]Add Image to layout on touch in android with respect to touch position

關於xy位置,我在屏幕上觸摸的任何位置都需要在該特定位置上添加一張圖像。 我嘗試實現ontouch偵聽器,但它會將圖像添加到不同的位置,並且許多圖像都出現在許多觸摸上,我想要一些東西,例如我曾經觸摸過的同一圖像應該出現在哪里,請幫助我是android系統項目中的新手一個公司

這是我的活動代碼

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

    final RelativeLayout rl = (RelativeLayout) findViewById(R.id.wwcontainer);
    //Set On TouchListner to the Layout
            rl.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    Log.i("OnTouch", "On Touch View Group....");
                    int x = (int) event.getX();
                    int y = (int) event.getY();

                     ImageView imageView = new ImageView(getApplicationContext());
                     imageView.setImageResource(R.drawable.icon);
                     imageView.setLayoutParams(new LayoutParams(x,y));
                     rl.addView(imageView);
                    return true;
                }
            });
}

我知道拖放操作,我不希望拖放,而是需要觸摸任何應該出現圖像的位置,請觸摸我,請幫助我

我有同樣的要求,這就是我所做的,對我來說效果很好

final RelativeLayout rr = (RelativeLayout) findViewById(R.id.rr);
    rr.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                int x = (int) event.getX();
                int y = (int) event.getY();
                RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.WRAP_CONTENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
                ImageView iv = new ImageView(getApplicationContext());
                lp.setMargins(x, y, 0, 0);
                iv.setLayoutParams(lp);
                iv.setImageDrawable(getResources().getDrawable(
                        R.drawable.gr1));
                ((ViewGroup) v).addView(iv);
            }
            return false;
        }
    });

這會將圖像放置到RelativeLayout中,您從此處觸摸開始坐標。 如果要將新圖像居中放置在觸摸了RelativeLayout的位置,則需要計算圖像的高度和寬度,並將代碼中的一行更改為

lp.setMargins(x - yourImageWidth/2, y - yourImageHeight/2, 0, 0);

您需要使用AbsoluteLayout而不是RelativeLayout。

要在特定的x,y位置添加圖像,您需要AbsoluteLayout。

您是否檢查過int值getX()和getY()返回的值,我認為它將返回0,0。

請使用event.getRawX()和event.getRawX()來獲取實際的觸摸位置。 我希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM