• 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一样
  • 相关阅读:
    转-iOS开发系列--地图与定位
    转-关于UIView的autoresizingMask属性的研究
    UIAlertController的使用,代替UIAlertView和UIActionSheet
    设置当前导航栏(navigationController)的标题
    tabBar隐藏方式
    ubuntu 安装qq 及解决安装完搜狗输入法不显示键盘的方法
    python 读写文件
    Ubuntu:如何显示系统托盘图标(systray)
    python tesseract 识别图片中的文字的乱码问题(ubuntu系统下)
    让Ubuntu可以压缩/解压缩RAR文件
  • 原文地址:https://www.cnblogs.com/riskyer/p/3253803.html
Copyright © 2020-2023  润新知