安卓节目编辑功能有没有人推荐一下?

最近公司有个界面编辑功能的需求:
1.在一个界面有个父布局,可以动态往里面添加图片视频等子控件
2.内部的所有子控件都可以点击选中缩放拖拽
3.子控件内部的内容可以随时替换,也可同时添加多个轮询显示

img

下面代码可以实现,望采纳一下,谢谢
private int lastX = 0;
private int lastY = 0; //手指在屏幕上的坐标

private boolean isDraged = false; //View是否被移动过
private boolean isDrag = false; //判断是拖动还是点击
private class DragViewOnTouchListener implements OnTouchListener{

@Override
public boolean onTouch(View v, MotionEvent event) {

    int parentRight = ((ViewGroup)v.getParent()).getWidth();
    int parentBottom = ((ViewGroup)v.getParent()).getHeight();
    int action = event.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            isDrag = false;
            isDraged = false;
            lastX = (int) event.getRawX();
            lastY = (int) event.getRawY();
            break;
        case MotionEvent.ACTION_MOVE:
            int dx = (int) event.getRawX()-lastX;
            int dy = (int) event.getRawY()-lastY; //手指在屏幕上移动的距离

            if (isDraged){
                isDrag = true; //如果已经被拖动过,那么无论本次移动的距离是否为零,都判定本次事件为拖动事件
            }else{
                if (dx == 0 && dy == 0){
                    isDraged = false; //如果移动的距离为零,则认为控件没有被拖动过,灵敏度可以自己控制
                }else{
                    isDraged = true;
                    isDrag = true;
                }
            }

            int l = v.getLeft()+dx;
            int b = v.getBottom()+dy;
            int r = v.getRight()+dx;
            int t = v.getTop()+dy;
            if(l < 0){//处理按钮被移动到父布局的上下左右四个边缘时的情况,防止控件被拖出父布局
                l = 0;
                r = l + v.getWidth();
            }
            if(t < 0){
                t = 0;
                b = t + v.getHeight();
            }
            if(r > parentRight){
                r = parentRight;
                l = r - v.getWidth();
            }
            if(b > parentBottom){
                b = parentBottom;
                t = b - v.getHeight();
            }
            lastX = (int) event.getRawX();
            lastY = (int) event.getRawY();
            v.layout(l, t, r, b);
            v.postInvalidate(); //其他view刷新时,会导致view回到原点,可以用设置LayoutParams的方式代替
            break;
    }
    return isDrag; //如果没有给view设置点击事件,需返回true,否则不会响应ACTION_MOVE,导致view不会被拖动
}

}