我們經常看到這樣的效果,乙個listview和gridview亦或者是recycleview,再上拉或下拉到頂部的時候,還能再拖拽一段距離,這種效果是是非常常見的,因為用的比較多,所以記錄一下.
實現思路是自定義乙個scrollview:
具體**如下
package fenganoschina.fenganoschina;
import android.annotation.suppresslint;
import android.content.context;
import android.graphics.rect;
import android.util.attributeset;
import android.view.motionevent;
import android.view.view;
import android.view.animation.translateanimation;
import android.widget.listview;
import android.widget.scrollview;
/** * 可以拖動的scrollview
*/public
class
customerscrollview
extends
scrollview
public
customerscrollview(context context, attributeset attrs)
@override
protected
void
onfinishinflate()
}@suppresslint("clickableviewaccessibility")
@override
public
boolean
ontouchevent(motionevent ev) else
return
super.ontouchevent(ev);
}public
void
commontouchevent(motionevent ev)
break;
case motionevent.action_move:
final
float prey = y;
float nowy = ev.gety();
/*** size=4 表示 拖動的距離為螢幕的高度的1/4
*/int deltay = (int) (prey - nowy) / size;
// 滾動
// scrollby(0, deltay);
y = nowy;
if (isneedmove())
int yy = inner.gettop() - deltay;
// 移動布局
inner.layout(inner.getleft(), yy, inner.getright(),
inner.getbottom() - deltay);
}break;
default:
break;}}
public
void
animation()
public
boolean
isneedanimation()
public
boolean
isneedmove()
return
false;}}
布局檔案
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content">
com.fengan.listviewforsc>
com.fengan.customerscrollview>
relativelayout>
需要注意的是:因為涉及到scrollview和listview的巢狀,會導致listview上顯示資料不完全
可以簡單的自定義listview**:
(具體見上篇
**如下:
import android.content.context;
import android.util.attributeset;
import android.widget.listview;
/** * created by fengan on 2016/12/19.
*/public
class
listviewforsc
extends
listview
public
listviewforsc(context context, attributeset attrs, int defstyleattr)
public
listviewforsc(context context, attributeset attrs)
@override
protected
void
onmeasure(int widthmeasurespec, int heightmeasurespec)
}
是不是很簡單呢 用JS指令碼做乙個可拖動的對話方塊
用 js指令碼做乙個可拖動的對話方塊 左直拳一 可拖動 關鍵是能跟蹤滑鼠座標的變化,從而不斷修正對話方塊的座標。假設待移動的對話方塊為 objmove 則有 px event.x objmove.style.pixelleft py event.y objmove.style.pixeltop 其中...
自定義View上(做乙個可拖動的控制項)
布局 xml version 1.0 encoding utf 8 android.support.constraint.constraintlayoutxmlns android xmlns xmlns tools android layout width match parent android...
用JS指令碼做乙個可拖動的對話方塊
用js指令碼做乙個可拖動的對話方塊 左直拳一 可拖動 關鍵是能跟蹤滑鼠座標的變化,從而不斷修正對話方塊的座標。假設待移動的對話方塊為objmove,則有 px event.x objmove.style.pixelleft py event.y objmove.style.pixeltop 其中pi...