• gallery 从最左边开始显示并且默认选中第一个


    import android.content.Context;
    import android.graphics.Camera;
    import android.graphics.Matrix;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.animation.Transformation;
    import android.widget.Gallery;
     
    public class MyGallery extends Gallery {
            private Camera mCamera;
            private int mWidth;
            private int mPaddingLeft;
            private boolean flag;
            private static int firstChildWidth;
            private static int firstChildPaddingLeft;
     
            /*
             * 构造方法
             */
            public MyGallery(Context context) {
                    super(context);
                    mCamera = new Camera();
                    this.setStaticTransformationsEnabled(true);
            }
     
            /*
             * 构造方法
             */
            public MyGallery(Context context, AttributeSet attrs) {
                    super(context, attrs);
                    mCamera = new Camera();
                    this.setStaticTransformationsEnabled(true);
            }
     
            /*
             * 构造方法
             */
            public MyGallery(Context context, AttributeSet attrs, int defStyle) {
                    super(context, attrs, defStyle);
                    mCamera = new Camera();
                    this.setStaticTransformationsEnabled(true);
            }
     
     
            protected boolean getChildStaticTransformation(View child, Transformation t) {
                    t.clear();
                    t.setTransformationType(Transformation.TYPE_MATRIX);
                    mCamera.save();
                    final Matrix imageMatrix = t.getMatrix();
                    if (flag) {
                            firstChildWidth = getChildAt(0).getWidth();
                            firstChildPaddingLeft = getChildAt(0).getPaddingLeft();
                            flag = false;
                    }
                    mCamera.translate(firstChildWidth / 2 + firstChildPaddingLeft + mPaddingLeft - mWidth / 2, 0f, 0f);
                    mCamera.getMatrix(imageMatrix);
                    mCamera.restore();
                    return true;
            }
     
            protected void onSizeChanged(int w, int h, int oldw, int oldh) {
                    if (!flag) {
                            mWidth = w ;
                            getLayoutParams().width = mWidth;
                            flag = true;
                    }
                    super.onSizeChanged(w, h, oldw, oldh);
            }
     
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
              return super.onFling(e1, e2, 0, velocityY);//方法一:只去除翻页惯性
            }
     
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                    // TODO Auto-generated method stub
                    return super.onScroll(e1, e2, distanceX, distanceY);
            // TODO Auto-generated method stub
            }
     
    }
    在程序中调用MyGallery就可以实现,调用方面跟Gallery一样
  • 相关阅读:
    题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。
    冒泡排序、插入排序、快速排序
    去掉字符串中重复的字符
    建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环
    day_1 练习2
    python-day 练习1
    python课程第一天笔记-la
    初学react,为什么页面不显示
    跟我一起学写插件开发
    网上下载的带特效的jquery插件怎么用
  • 原文地址:https://www.cnblogs.com/riskyer/p/3253803.html
Copyright © 2020-2023  润新知