如何将ImageView添加到RelativeLayout的中心并让它拖动手势?

时间:2014-07-17 10:18:04

标签: android android-imageview ontouchlistener android-relativelayout

我是通过Java代码向ImageView添加RelativeLayout,而未在Imageview中声明XML。使用以下代码:

final ImageView newImageView= new ImageView(context);
        final RelativeLayout.LayoutParams imgvwDimens = 
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                         RelativeLayout.LayoutParams.WRAP_CONTENT);

        newImageView.setLayoutParams(imgvwDimens);
       ImageLoader imageLoader = new ImageLoader(context);
       imageLoader.DisplayImage(imageURL, R.drawable.ic_launcher, newImageView);

        newImageView.setScaleType(ScaleType.MATRIX);
        newImageView.setLongClickable(true);
        newImageView.setClickable(true);

我想在ImageView的中心添加RelativeLayout,以便可以通过以下方式完成:

imgvwDimens.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);

但是,如果我这样做,ImageView会在触摸时赢得DRAG,那么在移动时我尝试使用以下方式移除CENTER_IN_PARENT

newImageView.setOnTouchListener(new OnTouchListener() 
              {

                @Override
                public boolean onTouch(View v, MotionEvent event) 
                {

                    switch(event.getAction())
                    {
                        case MotionEvent.ACTION_DOWN :
                        {
                            imgvwDimens.removeRule(RelativeLayout.CENTER_IN_PARENT);

之后,我可以移动ImageView,但在触摸后,它会重新定位到布局的开始。

请向我提供有用的代码或链接。谢谢。

1 个答案:

答案 0 :(得分:0)

我明白了,实际上解决方案非常简单:)

以下代码最初可用于居中ImageView,因为我使用的是RelativeLayout:

        imgvwDimens.leftMargin = rl.getWidth()/2;
        imgvwDimens.topMargin = rl.getHeight()/2;