1、 第一页和第二页中间,能看到第一页的后半部分和第二页的前半部分,中间是黑色的分割线。 第 1 页,上面显示的数字是 1。 第 2 页,上面显示的数字是 2.接下来贴上主要代码。首先是这个 FlatWorkSpace,沿用网上一帖子的取名,主要是因为 Launcher 里面叫WorkSpace. 这个是一个 ViewGroup,在创建的时候添加了三个 ImageView。然后构造方法的重写就不用说了。主要要重写的方法有dispatchDraw,onMeasure, onLayout,computeScroll,onTouchEvent,他们的作用从源代码中可以看出来。package com.hh
2、g.test.testscroll;import com.hhg.test.testscroll.R;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.Scroller;publ
3、ic class FlatWorkSpace extends ViewGroup private float mTouchX;private float mLastMotionX;private int mActivePointerId = -1;private Scroller mScroller;public FlatWorkSpace(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle);public FlatWorkSpace(Context context, Attribu
4、teSet attrs) this(context, attrs, 0);public void initScreen() Context context = getContext();mScroller = new Scroller(context);for (int i = 0; i 0) scrollBy(int)deltaX, 0); else if (deltaX 然后就是在 MainActivity 中初始化这个 viewgroup,在 viewgroup 滑动完成后修改上面的页数。package com.hhg.test.testscroll;import android.app
5、.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity private static TextView sIndicator1;private static TextView sIndicator2;private static TextView sIndicator3;Overridepublic void onCreate(Bundle savedInstanceState) su
6、per.onCreate(savedInstanceState);setContentView(R.layout.main);FlatWorkSpace lws = (FlatWorkSpace) findViewById(R.id.myid);lws.initScreen();sIndicator1 = (TextView) findViewById(R.id.indicator_1);sIndicator2 = (TextView) findViewById(R.id.indicator_2);sIndicator3 = (TextView) findViewById(R.id.indicator_3); public static void setLevel(int level) sIndicator1.setVisibility(level = 0 ? View.VISIBLE : View.INVISIBLE);sIndicator2.setVisibility(level = 1 ? View.VISIBLE : View.INVISIBLE);sIndicator3.setVisibility(level = 2 ? View.VISIBLE : View.INVISIBLE);