編輯:關於Android編程
Android控件拖動
Android控件的拖動,主要是通過設置控件的setOnTouchListener()方法,重寫它的onTouch()方法。然後通過MotionEvent的不同事件,進行判斷,主要是在MotionEvent.ACTION_MOVE中不斷重繪控件在畫布中的位置,而實現拖動的效果。
public class DragViewActivity extends AppCompatActivity { private Button btn_drag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drag_view); // 獲取屏幕的寬高 DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWith = dm.widthPixels; final int screenHeight = dm.heightPixels; btn_drag = (Button) findViewById(R.id.btn_drag); btn_drag.setOnTouchListener(new View.OnTouchListener() { int lastX; int lastY; boolean isDraging = false; @Override public boolean onTouch(View v, MotionEvent event) { int ee = event.getAction(); switch (ee){ case MotionEvent.ACTION_DOWN: isDraging = true; lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_MOVE: if (isDraging){ // x軸方向的位移差 int dx = (int) event.getRawX() - lastX; // y軸方向的位移差 int dy = (int) event.getRawY() - lastY; int l = v.getLeft() + dx; int t = v.getTop() + dy; int r = v.getRight() + dx; int b = v.getBottom() + dy; // 判斷超出屏幕 if (l < 0){ l = 0; r = l + v.getWidth(); } if (t < 0){ t = 0; b = t + v.getHeight(); } if (r > screenWith){ r = screenWith; l = r - v.getWidth(); } if (b > screenHeight){ b = screenHeight; t = b - v.getHeight(); } // 重繪view v.layout(l, t, r, b); v.postInvalidate(); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); } break; case MotionEvent.ACTION_UP: isDraging = false; break; default: break; } return false; } }); }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
有時候我們保存文件總會用到文件浏覽器功能.那麼今天博主帶大家做一個。那麼開始,浏覽文件,我們就需要寫一個文件工具類。import java.io.File; import
這篇文章是android開發人員的必備知識,是我特別為大家整理和總結的,不求完美,但是有用。1.背景自適應且不失真問題的存在 制作自適應背景圖片是UI開發的一個廣泛問題
Activity的生命周期 Android的核心組件 1.Viiew :界面 ,組織UI控件 2.Intent :意圖,支持組件之間的通信 3.Activity:
package com.gc.adapterviewflipperdemo; /** * 功能:自動播放的圖片庫 * @author Android將軍 */ /*