Android 實現滑動的幾種方法(二)LayoutParams

通過改變layoutParams 來改變一個View的位置時,通常改變的是這個View的Margin屬性

package com.example.administrator.myapplication;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Administrator on 2015/11/22 0022.
 */
public class MyView extends View {
    int lastX ;
    int lastY ;
    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int x = (int) event.getX();
        int y = (int) event.getY();

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastX = x;
                lastY = y;
                break;

            case MotionEvent.ACTION_MOVE:
                int offx = x - lastX;
                int offy = y - lastY;
        /*
        *   通過改變layoutParams 來改變一個View的位置時,通常改變的是這個View的Margin屬性
        *
        */
                ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) getLayoutParams();
                params.leftMargin = getLeft()+offx;
                params.topMargin = getTop()+offy;
                setLayoutParams(params);
                lastX = x;
                lastY = y;

                break;
        }
        return true;
    }

}
發佈了101 篇原創文章 · 獲贊 8 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章