Android 在頁面任意拖動View

public class TestActivity extends AppCompatActivity {

    private ImageView iv1;
    private float downX;
    private float downY;
    private int screenWidth;
    private int screenHeight;
    private int actionBarHeight = 0;

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_boll_free_fall);

        screenWidth= getDispaly(this).widthPixels;
        screenHeight= getDispaly(this).heightPixels;

        iv1 = findViewById(R.id.iv_1);

        iv1.post(new Runnable() {
            @Override
            public void run() {
                if(getSupportActionBar() != null){
                    actionBarHeight = getSupportActionBar().getHeight();
                    Log.d("xiazhenjie","actionBarHeight--" + actionBarHeight);
                }
            }
        });

        iv1.setOnTouchListener((v, event) -> {
            switch (event.getAction()){
                case MotionEvent.ACTION_DOWN:
                    downX = event.getX();
                    downY = event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    Log.e("kid","ACTION_MOVE");
                    final float xDistance = event.getX() - downX;
                    final float yDistance = event.getY() - downY;
                    int l, r, t, b;
                    //當(dāng)水平或者垂直滑動距離大于10,才算拖動事件
                    if (Math.abs(xDistance) > 10 || Math.abs(yDistance) > 10) {
                        l = (int) (iv1.getLeft() + xDistance);
                        r = l + iv1.getWidth();
                        t = (int) (iv1.getTop() + yDistance);
                        b = t + iv1.getHeight();
                        //不劃出邊界判斷,此處應(yīng)按照項(xiàng)目實(shí)際情況,因?yàn)楸卷?xiàng)目需求移動的位置是手機(jī)全屏,
                        // 所以才能這么寫,如果是固定區(qū)域,要得到父控件的寬高位置后再做處理
                        if(l < 0){
                            l = 0;
                            r = l + iv1.getWidth();
                        }else if(r > screenWidth){
                            r = screenWidth;
                            l = r - iv1.getWidth();
                        }
                        if(t < 0){
                            t = 0;
                            b = t + iv1.getHeight();
                        }else if(b > screenHeight - actionBarHeight){//如果有Actionbar珊佣,也需要考慮其高度
                            b = screenHeight - actionBarHeight;
                            t = b - iv1.getHeight();
                        }
                        iv1.layout(l, t, r, b);
                    }
                    break;
                case MotionEvent.ACTION_UP:
                case MotionEvent.ACTION_CANCEL:
                    iv1.setPressed(false);
                    break;
            }
            return true;
        });
    }

    public static DisplayMetrics getDispaly(Context context){
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return dm;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末萍膛,一起剝皮案震驚了整個(gè)濱河市改化,隨后出現(xiàn)的幾起案子鸠信,更是在濱河造成了極大的恐慌嵌巷,老刑警劉巖唠摹,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魂务,死亡現(xiàn)場離奇詭異,居然都是意外死亡考阱,警方通過查閱死者的電腦和手機(jī)翠忠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乞榨,“玉大人秽之,你說我怎么就攤上這事当娱。” “怎么了考榨?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵跨细,是天一觀的道長。 經(jīng)常有香客問我河质,道長冀惭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任掀鹅,我火速辦了婚禮散休,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乐尊。我一直安慰自己戚丸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布扔嵌。 她就那樣靜靜地躺著限府,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痢缎。 梳的紋絲不亂的頭發(fā)上胁勺,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音独旷,去河邊找鬼姻几。 笑死,一個(gè)胖子當(dāng)著我的面吹牛势告,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抚恒,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼咱台,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俭驮?” 一聲冷哼從身側(cè)響起回溺,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎混萝,沒想到半個(gè)月后遗遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逸嘀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年车要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崭倘。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翼岁,死狀恐怖类垫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琅坡,我是刑警寧澤悉患,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站榆俺,受9級特大地震影響售躁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茴晋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一陪捷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晃跺,春花似錦揩局、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烹玉,卻和暖如春驰怎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背二打。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工县忌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人继效。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓症杏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瑞信。 傳聞我的和親對象是個(gè)殘疾皇子厉颤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容