第一次写博客,写得不好不要见怪,今天主要说说 拖拉控件,希望和大家交流下。
废话不多说,进入正题。Android 提供了拖拉控件的接口,主要是 View.DragShadowBuilder类 和View.OnDragListener接口 。DragShadowBuilder类主要是关于阴影部分的描叙,而OnDragListener 接口可以监听拖动状态的。
一般的控件例如TextView,button,或者image里面都内置一个方法叫做startDrag(ClipData data, DragShadowBuilder shadowBuilder, Object myLocalState, int flags)方法,第一个,第三个,第四个参数,我不清楚,假如有知道的朋友可以留言告知我下,小弟再次感谢; 第二个参数是DragShadowBuilder对象。
代码:MyShadow shadow=new MyShadow(v);
v.startDrag(null, shadow, null,0);
img2.setVisibility(View.INVISIBLE);
MyShadow 是我重写DragShadowBuilder之后的类,当然直接用DragShadowBuilder也是可以的,不过重写的可以设置阴影部分的大小,以及显示出来的图片。重写DragShadowBuilder主要写俩个方法onProvideShadowMetrics和onDrawShadow 这俩个方法在这就不解释了。还要提醒一点在DragShadowBuilder类中可以通过getview()方法获取拖动的那个控件。
重写的MyShadow :
@Override
public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
// 视图的宽度
int width = getView().getWidth();
// 视图的高度
int height = getView().getHeight();
shadowidth = (int) (width * 2);
shadowheight = (int) (height * 2);
shadowSize.set(shadowidth, shadowheight);
shadowTouchPoint.set(45, 45);
}
@Override
public void onDrawShadow(Canvas canvas) {
ImageView img = (ImageView) getView();
Drawable drawable = img.getDrawable();
Bitmap b = ((BitmapDrawable) drawable).getBitmap();
newbitmap = b.createScaledBitmap(b, 108, 108, true);
canvas.drawBitmap(newbitmap, 0, 0, new Paint());
}