2013-05-09 83 views
0

在我的android應用程序中,我想在長按時將邊框設置爲ImageView。我還想在用戶釋放視圖時刪除相同的(邊框)。請任何人,在這幫助我?如何在Longpress中爲android Imageview設置邊框?

imageView.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
       imageView.setPadding(2, 2, 2, 2); 
       imageView.setBackgroundColor(Color.WHITE); 
      return true; 
     } 
    }); 

您可以通過OnTouchListener也這麼做:

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      mTouchDownX = (int) event.getX(); 
      mTouchDownY = (int) event.getY(); 
      break; 
     } 
     case MotionEvent.ACTION_MOVE: { 
      int x = (int) event.getX(); 
      int y = (int) event.getY(); 

      if (mDraggedItem >= 0) { 
       setDraggedItemPosition(x, y); 
       int index = getIndexFromCoordinates(x, y); 
       if (index == mDraggedItem || index < 0) break; 

       if (index < mDraggedItem) { 
        for (int i = index; i < mDraggedItem; i++) { 
         moveViewToPosition(i, i+1); 
        } 
        for (int i = mDraggedItem-1; i >= index; i--) { 
         View view = mGridMap.get(i); 
         mGridMap.put(i+1, view); 
        } 
       } else { 
        for (int i = index; i > mDraggedItem; i--) { 
         moveViewToPosition(i, i-1); 
        } 
        for (int i = mDraggedItem+1; i <= index; i++) { 
         View view = mGridMap.get(i); 
         mGridMap.put(i-1, view); 
        } 
       } 
       mLog.i("onTouchEvent - ACTION_MOVE - mDraggedItem: "+mDraggedItem+" index: "+index); 
       mGridMap.put(index, mDraggedView); 
       mDraggedItem = index; 
      } 
      break; 
     } 
     case MotionEvent.ACTION_UP: { 
      if (mDraggedItem >= 0) { 
       Point xy = getCoordinatesFromPosition(mDraggedItem); 
       mDraggedView.layout(xy.x, xy.y, xy.x+mChildSize, xy.y+mChildSize); 
       mDraggedView.clearAnimation(); 
       mDraggedView.setPadding(0, 0, 0, 0); 
       setOnClickListener(this); 
       invalidate(); 
       mRearrangeListener.onRearrange(mGridMap); 
      } 
      mDraggedItem = -1; 
      for(int i=0;i<mGridMap.size();i++) 
      { 
      String tag = mGridMap.get(i).getTag().toString(); 
      } 
      break; 
     } 
    } 

    return super.onTouchEvent(event); 

} 

@Override 
public boolean onLongClick(View v) { 

    int index = getIndexFromCoordinates(mTouchDownX, mTouchDownY); 
    if (index >= 0) { 
     // animate this item for enabling drag. 
     mDraggedItem = index; 
     mDraggedView = mGridMap.get(index); 
     mDraggedView.setPadding(2, 2, 2, 2); 
     mDraggedView.setBackgroundColor(Color.WHITE); 
     setDraggedItemPosition(mTouchDownX, mTouchDownY); 
     animateDragged(); 
    } 

    return true; 
} 
+1

你到目前爲止嘗試過什麼?請添加一些與問題相關的代碼。 – 2013-05-09 11:21:59

+0

@SankarV我試圖設置邊框的圖像視圖,當它長時間按下。但我不知道如何刪除邊框時發佈 – Krishna 2013-05-09 11:23:41

+1

更新您的問題與代碼 – 2013-05-09 11:25:04

回答

1

可以圍繞ImageView一路通過OnLongClickListener添加如下厚度2的白色邊框

imageView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event){ 
      case MotionEvent.ACTION_DOWN: 
       imageView.setPadding(2, 2, 2, 2); 
       break; 
      case MotionEvent.ACTION_UP: 
       imageView.setPadding(0, 0, 0, 0); 
       break; 
      } 
      return false; 
    } 

您可以組合這兩個設置OnLongClickListener中的填充,並刪除填充MotionEvent.ACTION_UP se OnTouchListener

+0

@ biddulph.r我試着用你的答案設置的背景工作正常,但它並沒有隱藏,當發佈 – Krishna 2013-05-10 05:16:19

+0

嘗試設置背景顏色是透明的,然後觸發重繪的ImageView – 2013-05-10 08:44:25

0

刪除背景。使用setbackground(null)或者setbackground(Color.Transparent)。 :)

相關問題