直接上**就不廢話了: 先上左右阻尼的;
package com.example.sunchip.view;
/** * created by administrator on 2019/10/31.
*/import android.util.log;
import android.view.view;
import android.widget.horizontalscrollview;
import android.content.context;
import android.graphics.rect;
import android.util.attributeset;
import android.view.motionevent;
import android.view.animation.translateanimation;
public class horizontalfeaturescrollview extends horizontalscrollview
/*** 基於xml生成的檢視所做的工作。
* 建立上次呼叫的檢視中的函式。
* 新增所有子檢視後。
*/@override
protected void onfinishinflate()
}/**
* 觸控事件處理
**/@override
public boolean ontouchevent(motionevent ev)
return super.ontouchevent( ev );
}@override
public boolean onintercepttouchevent(motionevent ev)
}return super.onintercepttouchevent( ev );
}/**
* 滑動事件(讓滑動速度變成原來的1/2)
*/@override
public void fling(int velocityy)
/***
* 觸控事件
** @param ev
*/public void commontouchevent(motionevent ev)
break;
/*** 不包括第一次移動計算。
* 因為第一次不能知道y座標。
* 在motionevent.action_down中不獲取。
* 因為這一次是傳遞給上述listview子項的myscrollview touch事件。
* 所以從第二次計算,但我們也必須初始化。
* 就是這樣。第一次將滑動距離移動到0。
* 以後記錄準確就可以正常執行了。
*/case motionevent.action_move:
final float prex = x;// 當按下y座標時
float nowx = ev.getx();// 總協調員
int deltax = (int) (nowx - prex);// 滑動距離
if (!iscount)
// 當滾動到頂部或最上面時,它將不滾動,然後移動布局。
isneedmove();
if (ismoveing)
log.e( "tag", " " + deltax / size );
// 移動布局
inner.layout( inner.getleft() + deltax / size, inner.gettop(),
inner.getright() + deltax / size, inner.getbottom() );
left += (deltax / size * 2);
}iscount = true;
x = nowx;
break;
default:
break;}}
/*** 縮回動畫
*/public void animation()
// 是否需要啟用動畫
public boolean isneedanimation()
/***
* 是否需要將布局移到內部。getmeasuredheight():獲取控制項的總高度
* get height():獲取螢幕的高度。
* @return
*/public void isneedmove()
}public void setcontextview(view view)
}
再上上下的:
package com.example.sunchip.view;
/** * created by administrator on 2019/10/31.
*/import android.util.log;
import android.widget.scrollview;
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;
public class verticaldampenscrollview extends scrollview
private scrollviewchangelistener changelistener = null;
public void setchangelistener(scrollviewchangelistener changelistener)
public inte***ce scrollviewlistener
private scrollviewlistener scrollviewlistener = null;
public void setscrollviewlistener(scrollviewlistener scrollviewlistener)
public verticaldampenscrollview(context context)
public verticaldampenscrollview(context context, attributeset attrs)
@override
protected void onfinishinflate()
}@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();
int deltay = (int) (prey - nowy) / size;
y = nowy;
// 當滾動到頂部或最上面時,它將不滾動,然後移動布局。
if (isneedmove())
int yy = inner.gettop() - deltay;
if (yy < -100) else
if (yy > 0)
log.e( "tag", yy + " " +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;
}@override
protected void onscrollchanged(int x, int y, int oldx, int oldy)
}}
使用方法:如果你不想使用兩個,你可以把兩個自定義控制項的**合併,這兩個自定義檔案的**並不衝突!<?xml version="1.0" encoding="utf-8"?>
Flex4之動畫效果 上下,左右擦掉效果
首先介紹從左到右的效果,這個是屬於flex4的effects動畫效果。使影象從左到右隱藏效果,呵呵,不用多說,貼上 xmlns s library xmlns mx library minwidth 955 minheight 600 下面我在介紹上下擦掉效果 如下所示 xmlns s librar...
上下左右居中的方法總結
居中的方法有很多,比較難的是選擇合適的方法。今天搜了一下,總結一下各種居中方法的優缺點。演示效果 使用flexbox伸縮盒布局 優點 缺點 缺點 現在比較常用的方法,top設定為50 然後margin top設定成 自身高度的一半 優點 缺點 移動裝置上經常會用到,特別是當你不知道父容器的大小和自身...
實現div的上下左右都居中
把 綠色那個div 上下頁居中 讓層垂直居中於瀏覽器視窗 其實解決的思路是這樣的 首們需要position absolute 絕對定位。而層的定位點,使用外補丁margin負值的方法。負值的大小為層自身寬度高度除以二。如 乙個層寬度是400,高度是300。使用絕對定位距離上部與左部都設定成50 而m...