首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ViewGroup用onLayout兑现view的自由移动

2012-07-05 
ViewGroup用onLayout实现view的自由移动HelloViewGrouppackage com.fxhy.stady.myviewGroupimport com.fx

ViewGroup用onLayout实现view的自由移动
HelloViewGroup

package com.fxhy.stady.myviewGroup;import com.fxhy.stady.myviewGroup.R;import android.content.Context;import android.graphics.Rect;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.view.ViewManager;import android.widget.ImageView;public class HelloViewGroup extends ViewGroup {private float mTouchStartX;private float mTouchStartY;private int x = 0;private int y = 0;private int mSelectView = -1;Context mContext;public HelloViewGroup(Context context) {super(context);mContext = context;// TODO Auto-generated constructor stub}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {if (mSelectView != -1) {View v = getChildAt(mSelectView);if (v != null)v.layout(x, y, x + 300, y + 500);return;}View v = getChildAt(0);if (v != null)v.layout(x, y, x + 300, y + 500);View v1 = getChildAt(1);if (v1 != null)v1.layout(x + 300, y, x + 600, y + 500);View v2 = getChildAt(2);if (v2 != null)v2.layout(x + 600, y, x + 900, y + 500);}public boolean onTouchEvent(MotionEvent event) {float down_x = event.getX();float down_y = event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:if (mSelectView == -1) {for (int i = 0; i < getChildCount(); i++) {View child = getChildAt(i);if ((child.getLeft() < down_x && down_x < child.getRight())&& (child.getTop() < down_y && down_y < child.getBottom())) {mSelectView = i;break;}}}break;case MotionEvent.ACTION_MOVE:x = (int) event.getRawX() - 100;y = (int) event.getRawY() - 100;this.requestLayout();break;case MotionEvent.ACTION_UP:mSelectView = -1;break;}return true;}}
MainActivity
package com.fxhy.stady.myviewGroup;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.AttributeSet;import android.util.Log;import android.widget.ImageView;public class MainActivity extends Activity {Context mContext;    /** Called when the activity is first created. */    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        HelloViewGroup my =  new HelloViewGroup(this);        mContext = this;        ImageView mIcon = new ImageView( mContext);        ImageView mIcon1 = new ImageView( mContext);        ImageView mIcon2 = new ImageView( mContext);        mIcon.setImageResource(R.drawable.nvshen1);        mIcon1.setImageResource(R.drawable.nvshen2);        mIcon2.setImageResource(R.drawable.nvshen5);        my.addView(mIcon);        my.addView(mIcon1);        my.addView(mIcon2);        setContentView(my);                       }            }          
?

热点排行