删除后,ImageView变得不可见

时间:2014-02-18 10:33:15

标签: android drag-and-drop

我对android很新,我试图在onDragListener上实现演示,并且拖动工作正常,但是拖动结束时imageView变得不可见。我尝试了很多选项,但无法使其可见。另外一部分是我在点击按钮时创建imageView
以下是我的代码......

public class MainActivity extends Activity {
Button b1,b2;
FrameLayout f;
ImageView imageview;
private View selected_item = null;
private boolean dragging = false;
private static final int START_DRAGGING = 0;
private static final int STOP_DRAGGING = 1;
private int status;
private LinearLayout m_llTop;
private float oldXvalue;
private float oldYvalue;
RelativeLayout layout;
int x;
int y;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    captureImageInitialization();
     b1=(Button)findViewById(R.id.button1);
     b2=(Button)findViewById(R.id.button2);
     f=(FrameLayout)findViewById(R.id.framelayout);

     b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v){

             layout=new RelativeLayout(getBaseContext());
            //layout.setOrientation(LinearLayout.VERTICAL);
             imageview=new ImageView(getBaseContext());
            final TextView tv=new TextView(getBaseContext());
            /*TextView tv1=new TextView(getBaseContext());
            TextView tv2=new TextView(getBaseContext());
            TextView tv3=new TextView(getBaseContext());
            TextView tv4=new TextView(getBaseContext());*/
            RelativeLayout.LayoutParams ivparams = new RelativeLayout.LayoutParams(
                   100,100);
            RelativeLayout.LayoutParams tvparams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
            ivparams.setMargins(0,0,10,0);
            imageview.setId(1);
           registerForContextMenu(imageview);
           imageview.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View view, MotionEvent me) {

                if (me.getAction() == MotionEvent.ACTION_DOWN) {
                    DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
                    view.startDrag(null, shadowBuilder, view, 0);
                    view.setVisibility(View.INVISIBLE);
                    return true;
                }else {
                    return false;
                }

            }
        });

            imageview.setBackgroundResource(R.drawable.ic_launcher);
            imageview.setLayoutParams(ivparams);

            imageview.getRootView().setOnDragListener(new OnDragListener() {

                @Override
                public boolean onDrag(View v, DragEvent event) {
                     View view = (View) event.getLocalState();
                    switch (event.getAction()) {
                    case DragEvent.ACTION_DROP:

                    float X = event.getX();
                    float Y = event.getY();

                    view.setX(X-(imageview.getWidth()/2));
                    view.setY(Y-(imageview.getHeight()/2));
                    view.setVisibility(View.VISIBLE);
                    break;
                    case DragEvent.ACTION_DRAG_EXITED:

                          view.setVisibility(View.VISIBLE);
                           break;
                    case DragEvent.ACTION_DRAG_ENDED:
                           if(dropEventNotHandled(event)){
                               view.setVisibility(View.INVISIBLE);
                           }

                         break;

                default:
                    break;
                }
                return true;
                }
            });
            registerForContextMenu(tv);
            layout.addView(imageview);
            layout.addView(tv);
            f.addView(layout);
            }
        });

}
private boolean dropEventNotHandled(DragEvent dragEvent) {
    return !dragEvent.getResult();
}

}

1 个答案:

答案 0 :(得分:0)

将此添加到您的代码中:

f.addView(imageview);
f.addView(layout);

我认为这样可以解决问题