国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現圖片拖動效果

2019-12-12 03:27:22
字體:
來源:轉載
供稿:網友

要求:

1.通過手指移動來拖動圖片 

2.控制圖片不能超出屏幕顯示區域

技術點:

1.MotionEvent處理

2.對View進行動態定位(layout)

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView  android:id="@+id/iv_main"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@drawable/test"/></RelativeLayout>

MainActivity:

public class MainActivity extends Activity implements OnTouchListener { private ImageView iv_main; private RelativeLayout parentView; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  iv_main = (ImageView) findViewById(R.id.iv_main);  parentView = (RelativeLayout) iv_main.getParent();  /*  int right = parentView.getRight(); //0  int bottom = parentView.getBottom(); //0  Toast.makeText(this, right+"---"+bottom, 1).show();  */  //設置touch監聽  iv_main.setOnTouchListener(this); } private int lastX; private int lastY; private int maxRight; private int maxBottom; @Override public boolean onTouch(View v, MotionEvent event) {  //得到事件的坐標  int eventX = (int) event.getRawX();  int eventY = (int) event.getRawY();  switch (event.getAction()) {  case MotionEvent.ACTION_DOWN:   //得到父視圖的right/bottom   if(maxRight==0) {//保證只賦一次值    maxRight = parentView.getRight();    maxBottom = parentView.getBottom();   }   //第一次記錄lastX/lastY   lastX =eventX;   lastY = eventY;   break;  case MotionEvent.ACTION_MOVE:   //計算事件的偏移   int dx = eventX-lastX;   int dy = eventY-lastY;   //根據事件的偏移來移動imageView   int left = iv_main.getLeft()+dx;   int top = iv_main.getTop()+dy;   int right = iv_main.getRight()+dx;   int bottom = iv_main.getBottom()+dy;   //限制left >=0   if(left<0) {    right += -left;    left = 0;   }   //限制top   if(top<0) {    bottom += -top;    top = 0;   }   //限制right <=maxRight   if(right>maxRight) {    left -= right-maxRight;    right = maxRight;   }   //限制bottom <=maxBottom   if(bottom>maxBottom) {    top -= bottom-maxBottom;    bottom = maxBottom;   }   iv_main.layout(left, top, right, bottom);   //再次記錄lastX/lastY   lastX = eventX;   lastY = eventY;   break;  default:   break;  }  return true;//所有的motionEvent都交給imageView處理 }}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江永县| 彭州市| 仁化县| 康马县| 武功县| 永靖县| 陇川县| 沙河市| 鲁山县| 田林县| 云阳县| 运城市| 墨江| 鹿泉市| 崇义县| 仙桃市| 涿州市| 盐山县| 甘洛县| 雷波县| 抚顺县| 临潭县| 安溪县| 兴业县| 巴里| 界首市| 浠水县| 南召县| 叙永县| 辉县市| 苍山县| 冷水江市| 古浪县| 鸡东县| 乌海市| 遂宁市| 石屏县| 阿克| 凤凰县| 舟山市| 邵东县|