• Scroller 界面滑动



    Scroller 滑动之后滑动器子标签里面的控件,其自身是不动的.这里点在下面的进阶会体现出来.
     1. 继承LinearLayout, 相对布局也可以.
    public class MyLinearLayout extends LinearLayout {

       private Scroller scroller;

        public MyLinearLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
            scroller = new Scroller(context);
        }

        public void startScroll(int startX, int startY, int dx, int dy, int duration) {
            if (!scroller.isFinished()) scroller.abortAnimation();
            scroller.startScroll(startX, startY, dx, dy, duration);
            invalidate();
        }

        @Override
        public void computeScroll() {
            Log.d("cece", this.toString() + " computeScroll-----------");
            if (scroller.computeScrollOffset()) {
                scrollTo(scroller.getCurrX(), scroller.getCurrY());
                postInvalidate();
            }
        }
    }


    2. 主界面
    public class MyActivity extends Activity implements View.OnClickListener {

        private static final String TAG = "MyActivity";
        private Button button;
        private MyLinearLayout linearLayout;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
            button = (Button) findViewById(R.id.button);
           // imageView = (ImageView) findViewById(R.id.iv);
            linearLayout = (MyLinearLayout) findViewById(R.id.rl);


            button.setOnClickListener(this);
            findViewById(R.id.button2).setOnClickListener(this);
        }


        /**
         * Called when a view has been clicked.
         *
         * @param v The view that was clicked.
         */

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.button:
                    int x = linearLayout.getScrollX();
                    int y = linearLayout.getScrollY();
                    linearLayout.startScroll(x, y, 0, 100, 1000);
                    break;
                case R.id.button2:
                     x = linearLayout.getScrollX();
                     y = linearLayout.getScrollY();
                    Log.d(TAG, "x:"+x+" y:"+y);
                    linearLayout.startScroll(x, y, 0, -100, 1000);
                    break;
            }
        }
    }



    3. 资源文件
    <com.bytereal.luv.myapplication.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/iv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button1" />
        <!--   android:layout_alignParentBottom="true"
                  android:layout_alignParentEnd="true"-->

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button2" />
        <!-- android:layout_alignTop="@+id/button"
          android:layout_toStartOf="@+id/button"-->
    </com.bytereal.luv.myapplication.MyLinearLayout>









  • 相关阅读:
    Linux操作系统分析之进程的创建与可执行程序的加载
    Linux操作系统分析之计算机是怎样工作的
    求二项分布的数学期望与方差的工式及证明过程
    世界就是一个班
    软件版妻子
    时代变迁
    也许ASP真的不行了???
    新一字诗
    祝女同志节日快乐!
    写啥
  • 原文地址:https://www.cnblogs.com/lv-2012/p/0e8682575833d981b374505126158ea2.html
Copyright © 2020-2023  润新知