package demo.scrollercompute;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.Scroller;
public class CustomLinearLayout extends LinearLayout {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
private Scroller mScroller;
private OnLogListener mOnLogListener;
// ===========================================================
// Constructors
// ===========================================================
public CustomLinearLayout(Context context) {
super(context);
initCustomLinearLayout(context);
}
public CustomLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initCustomLinearLayout(context);
}
// ===========================================================
// Public Methods
// ===========================================================
public void scrollToRight() {
// 以提供的起始点和将要滑动的距离开始滚动。滚动会使用缺省值250ms作为持续时间。
mScroller.startScroll(0, 0, -300, -400, 9000);
invalidate();
updateLog();
}
public void scrollToLeft() {
mScroller.startScroll(-300, -400, 300, 400, 9000);
invalidate();
updateLog();
}
public void logUtil(String output) {
Log.e("CustomLinearLayout", output);
}
public void setOnLogListener(OnLogListener pLogListener) {
mOnLogListener = pLogListener;
}
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
public void computeScroll() {
if (!mScroller.isFinished()) {
// computeScrollOffset() 返回false表示滚动结束
if (mScroller.computeScrollOffset()) {
updateLog();
// 设置滚动到何处
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
// 让系统重绘视图
invalidate();
}
}
}
// ===========================================================
// Private Methods
// ===========================================================
private void initCustomLinearLayout(Context context) {
mScroller = new Scroller(context);
}
private void updateLog() {
if (mOnLogListener != null) {
mOnLogListener.setOutput("\n x = " + getLeft()
+ "\n y = " + getTop()
+ "\n scroll X = " + getScrollX()
+ "\n scroll Y = " + getScrollY());
}
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
public interface OnLogListener {
public void setOutput(String pOutput);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ScrollerComputeDemo.zip (16个子文件)
ScrollerComputeDemo
bin
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 295B
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 1KB
gen
demo
scrollercompute
BuildConfig.java 162B
R.java 1KB
proguard.cfg 1KB
.settings
org.eclipse.core.resources.prefs 57B
org.eclipse.jdt.core.prefs 587B
src
demo
scrollercompute
CustomLinearLayout.java 3KB
ScrollerDemoActivity.java 3KB
.project 822B
.classpath 356B
project.properties 360B
AndroidManifest.xml 722B
共 16 条
- 1
love_world_
- 粉丝: 706
- 资源: 29
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页