Android 第十三天

2018-06-22  本文已影响5人  yezi1989

今天开始准备写个小游戏,找资料,考虑架构 布局 UI。。。

iOS开发一直都是应用开发,没有做过游戏开发,突然想写个小游戏发现好难啊,简直无从下手。第一、对控件的了解不够  第二、对游戏的整体架构不懂。等于今天什么都没弄出来。

要坚持下去吗?小伙伴们给点建议


今天学到的知识点:

1、onclick和onDrag 、ontouch区别,冲突解决方法

2. Imageview随手指拖动同时原视图不见,停止拖动后停留对应位置。

3、复习了粘贴板、拖放、自定义控件。

// 拖动后视图跟随移动

private class ImgOnTouchListenerimplements View.OnTouchListener

{

@RequiresApi(api = Build.VERSION_CODES.N)

@Override

    public boolean onTouch(View v, MotionEvent event) {

// event.getX 获取X坐标,event.getY获取Y坐标

        String sInfo ="X=" + String.valueOf(event.getX()) +"  Y=" + String.valueOf(event.getY());

// 提供位置数据"粘贴板"

        myClipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

ClipData data = ClipData.newPlainText("point",sInfo);

myClipBoard.setPrimaryClip(data);

// 重绘视图

        View.DragShadowBuilder shadowBuilder =new View.DragShadowBuilder(v);

// 开始沿拖拽路径绘制视图副本 这个是异步方法,启动起步线程后很快返回

        v.startDragAndDrop(data,shadowBuilder,v,0);

// 使原视图不可见

        v.setVisibility(View.INVISIBLE);

return true;

}

}

// 拖动停止后,拖动停止位置展示视图

class MyDragListenerimplements View.OnDragListener

{

@Override

    public boolean onDrag(View v, DragEvent event) {

int action = event.getAction();

switch (event.getAction())

{

case DragEvent.ACTION_DRAG_STARTED:

break;

case DragEvent.ACTION_DRAG_ENTERED:

break;

case DragEvent.ACTION_DRAG_LOCATION:

break;

case DragEvent.ACTION_DRAG_EXITED:

break;

case DragEvent.ACTION_DRAG_ENDED:

break;

case DragEvent.ACTION_DROP:

// view 实际上就是imageview

                View view = (View)event.getLocalState();

// owner 实际上就是父视图

                ViewGroup owner = (ViewGroup)view.getParent();

owner.removeView(view);

// v 实际上是GridView

                RelativeLayout gridView = (RelativeLayout) v;

gridView.addView(view);

view.setVisibility(View.VISIBLE);

ClipData data =myClipBoard.getPrimaryClip();

ClipData.Item item = data.getItemAt(0);

String point = item.getText().toString();

break;

default:

break;

}

return true;

}

}

上一篇下一篇

猜你喜欢

热点阅读