向左对齐的Gallery
来源:互联网 发布:新的网络社交软件 编辑:程序博客网 时间:2024/04/28 12:29
转载地址:http://www.eoeandroid.com/thread-158088-1-1.html
系统自带的Gallery选中的item总是在组件的中间。但是有些时候我们需要把选中的元素放在左边或者是Gallery一出来就要放在左边。
修改Gallery靠左对齐的思路:1、Gellary总是对center进行锁定的,所以可以考虑修改它的center的位置,把center改成在left的位置就可以了。
Gallery中有个方法:
/***@return The center of this Gallery.*/ private int getCenterOfGallery() { return (getWidth() - mPaddingLeft -mPaddingRight) / 2 + mPaddingLeft;}
a.
@ViewDebug.ExportedProperty This annotation can be used to markfields and methods to be dumped by the view server. Only non-void methods withno arguments can be annotated by this annotation.
b.
{@hide} Views which have been hidden or removedwhich need to be animated on their way out. This field should be made private,so it is hidden from the SDK.
总结:Gallery的源码太过复杂所以这个方法只好放弃。
2、重写Gallery。这个问题的关键是如何重写,重写什么。
Gallery其实只是显示了数据,那么我们不必把数据移动位置而把摄像机移动位置不就可以了吗?正是这样完成了Gallery的重写。代码如下:
package eoe.android.CustomGallery;import android.R.attr;import android.content.Context;import android.content.res.TypedArray;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 GalleryFlow extends Gallery { private Camera mCamera; private int mWidth; private int mPaddingLeft; private boolean flag; private static int firstChildWidth; private static int firstChildPaddingLeft; private int offsetX; public GalleryFlow(Context context) { super(context); mCamera = new Camera(); this.setStaticTransformationsEnabled(true); } public GalleryFlow(Context context, AttributeSet attrs) { super(context, attrs); mCamera = new Camera(); setAttributesValue(context, attrs); this.setStaticTransformationsEnabled(true); } public GalleryFlow(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mCamera = new Camera(); setAttributesValue(context, attrs); this.setStaticTransformationsEnabled(true); } private void setAttributesValue(Context context, AttributeSet attrs) { TypedArray typedArray = context.obtainStyledAttributes(attrs, new int[] { attr.paddingLeft }); mPaddingLeft = typedArray.getDimensionPixelSize(0, 0); typedArray.recycle(); } 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; } offsetX = firstChildWidth / 2 + firstChildPaddingLeft + mPaddingLeft - mWidth / 2; mCamera.translate(offsetX, 0f, 0f); mCamera.getMatrix(imageMatrix); mCamera.restore(); return true; } @Override public boolean onTouchEvent(MotionEvent event) { event.offsetLocation(-offsetX, 0); return super.onTouchEvent(event); } protected void onSizeChanged(int w, int h, int oldw, int oldh) { if (!flag) { mWidth = w * 2; getLayoutParams().width = mWidth; flag = true; } super.onSizeChanged(w, h, oldw, oldh); }}
- 向左对齐的Gallery
- 向左对齐的Gallery
- 向左对齐的Gallery
- 备忘:UIButton 的图片和标题 向左对齐
- Android 重写Gallery 左对齐
- ubuntu 设置窗口标题栏文字向左对齐
- html代码向左居右对齐
- 图片的滚动向左
- 从右向左的progressBar
- 向左的滚动轮播
- 点击Gallery弹出对应的Gallery大图
- Android 实现Gallery左对齐,选中Item不滑动效果
- Android 实现Gallery左对齐,选中Item不滑动效果
- Gallery的小技巧
- android Gallery的学习心得
- Gallery 的一些使用方法
- Gallery的使用
- android--Gallery的实现
- 数据库一体机介绍
- 位图和矢量图区别
- android服务Service(上)- IntentService
- java 计算文件或目录大小
- Socket编程
- 向左对齐的Gallery
- 面试准备(字符串类)写一个函数,完成内存之间的拷贝(考虑全面)
- maven2 Setting文件
- android 4.2 make bootimage libQtGui.so.4 编译问题
- Ubuntu下mount命令的好用处
- 可恶的windows7系统执行EXE文件报停止工作的错误
- java网络编程之UDP
- Oracle利用序列实现自动增长列
- RSA(非对称)压缩加密/解压缩解密||AES(对称)压缩加密/解压缩解密