public class TestActivity extends AppCompatActivity {
private ImageView iv1;
private float downX;
private float downY;
private int screenWidth;
private int screenHeight;
private int actionBarHeight = 0;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_boll_free_fall);
screenWidth= getDispaly(this).widthPixels;
screenHeight= getDispaly(this).heightPixels;
iv1 = findViewById(R.id.iv_1);
iv1.post(new Runnable() {
@Override
public void run() {
if(getSupportActionBar() != null){
actionBarHeight = getSupportActionBar().getHeight();
Log.d("xiazhenjie","actionBarHeight--" + actionBarHeight);
}
}
});
iv1.setOnTouchListener((v, event) -> {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
downX = event.getX();
downY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
Log.e("kid","ACTION_MOVE");
final float xDistance = event.getX() - downX;
final float yDistance = event.getY() - downY;
int l, r, t, b;
//當(dāng)水平或者垂直滑動距離大于10,才算拖動事件
if (Math.abs(xDistance) > 10 || Math.abs(yDistance) > 10) {
l = (int) (iv1.getLeft() + xDistance);
r = l + iv1.getWidth();
t = (int) (iv1.getTop() + yDistance);
b = t + iv1.getHeight();
//不劃出邊界判斷,此處應(yīng)按照項(xiàng)目實(shí)際情況,因?yàn)楸卷?xiàng)目需求移動的位置是手機(jī)全屏,
// 所以才能這么寫,如果是固定區(qū)域,要得到父控件的寬高位置后再做處理
if(l < 0){
l = 0;
r = l + iv1.getWidth();
}else if(r > screenWidth){
r = screenWidth;
l = r - iv1.getWidth();
}
if(t < 0){
t = 0;
b = t + iv1.getHeight();
}else if(b > screenHeight - actionBarHeight){//如果有Actionbar珊佣,也需要考慮其高度
b = screenHeight - actionBarHeight;
t = b - iv1.getHeight();
}
iv1.layout(l, t, r, b);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
iv1.setPressed(false);
break;
}
return true;
});
}
public static DisplayMetrics getDispaly(Context context){
DisplayMetrics dm = context.getResources().getDisplayMetrics();
return dm;
}
}
Android 在頁面任意拖動View
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乞榨,“玉大人秽之,你說我怎么就攤上這事当娱。” “怎么了考榨?”我有些...
- 文/不壞的土叔 我叫張陵跨细,是天一觀的道長。 經(jīng)常有香客問我河质,道長冀惭,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任掀鹅,我火速辦了婚禮散休,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乐尊。我一直安慰自己戚丸,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布扔嵌。 她就那樣靜靜地躺著限府,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痢缎。 梳的紋絲不亂的頭發(fā)上胁勺,一...
- 文/蒼蘭香墨 我猛地睜開眼咱台,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俭驮?” 一聲冷哼從身側(cè)響起回溺,我...
- 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎混萝,沒想到半個(gè)月后遗遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡逸嘀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年车要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崭倘。...
- 正文 年R本政府宣布,位于F島的核電站榆俺,受9級特大地震影響售躁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茴晋,卻給世界環(huán)境...
- 文/蒙蒙 一陪捷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晃跺,春花似錦揩局、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烹玉,卻和暖如春驰怎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背二打。 一陣腳步聲響...
- 正文 我出身青樓症杏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瑞信。 傳聞我的和親對象是個(gè)殘疾皇子厉颤,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 上一篇講到通過通過goolge官方的ViewDragHelper工具實(shí)現(xiàn)拖動的方法(上一篇見http://www....
- 需求是需要在一個(gè)已經(jīng)存在的頁面添加一個(gè)可拖動的浮層廣告。使用到的技術(shù):ViewDragHelper 效果如圖: 封...
- 項(xiàng)目需求:過程中要實(shí)現(xiàn)能在頁面中隨意的拖動凡简,剛開始實(shí)現(xiàn)是用懸浮球的形式進(jìn)行實(shí)現(xiàn)逼友,因?yàn)橹绊?xiàng)目中用過,實(shí)現(xiàn)后發(fā)現(xiàn)用戶...
- 因?yàn)橼s項(xiàng)目本人停更兩個(gè)月 從今天開始又可以更新了 今天說一下這個(gè)可隨意拖動的view 簡單說一下這個(gè)view效果...
- 其實(shí)這篇文章秤涩,是上篇文章Runtime的應(yīng)用部分的展開帜乞,從任意頁面跳轉(zhuǎn)任意頁面這塊主要不是Runtime的知識點(diǎn),...