package com.example.k.myapplication; /** * Created by k on 2016/5/30. */ public class demo { static boolean b = false; static int a = 0; public static void startBoolean() { b = true; } public static void closeBoolean(){ b = false; }}
================================================================
package com.example.k.myapplication; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; public class MainActivity extends AppCompatActivity { MyView my; float value; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); my = (MyView)findViewById(R.id.my); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { demo.closeBoolean(); } if (event.getAction() == MotionEvent.ACTION_DOWN) {// 按下即可触 Log.i("ok","主"); value = event.getY(); } my.method((int)event.getX(),(int)(event.getY()-value)); return super.onTouchEvent(event); } }================================================================================package com.example.k.myapplication; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.RelativeLayout; /** * Created by k on 2016/5/30. */ public class MyView extends View { int value = 0,value1=0; WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight(); int X; Context context; int Y; int a,c=0; public void method(int x,int y){ value = getTop(); Log.i("ok","y=======>"+y); if(demo.b) { if(value1 + y>0&&value1+200 + y<1280-160) { layout(getLeft(), value1 + y, getRight(), value1+200 + y); } } } private static final int DEFAULT_VIEW_WIDTH = 100; private static final int DEFAULT_VIEW_HEIGHT = 100; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } //测量自定义View的宽和高 @Override protected void onMeasure(int widthMeasureSpec, int heightMesureSpec) { int width = measureDimension(DEFAULT_VIEW_WIDTH, widthMeasureSpec); int height = measureDimension(DEFAULT_VIEW_HEIGHT, heightMesureSpec); setMeasuredDimension(width, height); } protected int measureDimension( int defaultSize, int measureSpec ) { int result = defaultSize; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); //当子控件被width或者height被设置为确定值时就会被激活 if (specMode == MeasureSpec.EXACTLY) { result = specSize; //建议:result直接使用确定值 } //当子控件被设置为wrap_content时,就会进入此判断 else if (specMode == MeasureSpec.AT_MOST) { result = Math.max(defaultSize, specSize); //建议:result不能大于specSize } //UNSPECIFIED,没有任何限制,所以可以设置任何大小 //多半出现在自定义的父控件的情况下,期望由自控件自行决定大小 else { result = defaultSize; } return result; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.YELLOW); //使view里面的正方形居中 //canvas.drawRect(getWidth()/2-20,getHeight()/2-20,getWidth()/2+20,getHeight()/2+20,paint); //使正方形居中且靠右 canvas.drawRect(0,getHeight()/2-20,40,getHeight()/2+20,paint); } @Override public boolean onTouchEvent(MotionEvent event) { demo.startBoolean(); value1 = value; return super.onTouchEvent(event); } }
自定义View(板块随手指移动)
最新推荐文章于 2024-05-05 09:13:20 发布