带有水平滚动视图的java简单图像库
我正在写一个水平滚动的图像库。必须通过编程方式添加图像。 我使用自定义水平滚动视图处理和添加图像,如下代码所示:
public void setViewList(Integer linearLayoutId, Integer[] imageIdList,
Activity activity) {
displayMetrics = ImageUtils.getDisplayMetric(activity);
LinearLayout ll = (LinearLayout) findViewById(linearLayoutId);
for (Integer imgId : imageIdList) {
ImageView imageView = new ImageView(getContext());
imageView.setImageResource(imgId);
imageView.setScaleType(ImageView.ScaleType.MATRIX);
Integer[] displayMetrics = ImageUtils.getDisplayMetric(activity);
ImageUtils.scaleImage(imageView, displayMetrics[0], displayMetrics[1]);
Integer[] dstDimension = ImageUtils.createDimension();
ImageUtils.getImageSize(imageView, dstDimension);
getImageSizeList().add(dstDimension);
ll.addView(imageView);
}
}
如您所见,我使用以下方法缩放图像(调用ImageUtils.scaleImage(imageView, displayMetrics[0], displayMetrics[1])
):
public static void scaleImage(ImageView imView, int screenWidth, int screenHeight) {
Drawable temp = imView.getDrawable();
Bitmap imBitmap = ((BitmapDrawable)temp).getBitmap();
int imWidth = imBitmap.getWidth();
int imHeight = imBitmap.getHeight();
float xScale = ((float) screenWidth) / imWidth;
float yScale = ((float) screenHeight) / imHeight;
float scale = xScale <= yScale ? xScale : yScale;
Matrix scaleMatrix = new Matrix();
scaleMatrix.postScale(scale, scale);
Bitmap scBitmap = Bitmap.createBitmap(imBitmap, 0, 0, imWidth, imHeight, scaleMatrix, true);
BitmapDrawable scDrBitmap = new BitmapDrawable(imView.getResources(), scBitmap);
imView.setImageDrawable(scDrBitmap);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT
);
layoutParams.gravity = Gravity.CENTER;
imView.setLayoutParams(layoutParams);
}
我的主菜。xml布局非常简单:
<?xml version="1.0" encoding="utf-8"?>
<安卓.lessons.custom_horizontal_scroll.CustomHorizontalScrollView
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:id="@+id/horizontalScrollView"
安卓:orientation="horizontal"
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
>
<LinearLayout 安卓:orientation="horizontal"
安卓:id="@+id/mainLayout"
安卓:layout_gravity="center"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"/>
</安卓.lessons.custom_horizontal_scroll.CustomHorizontalScrollView>
机器人在哪里。教训。自定义水平滚动。CustomHorizontalScrollView是一个简单的自定义HorizontalScrollView的实现
对于测试,我使用三星Galaxy S3和以下分辨率的图像:(1)1290*990(2)1221*900。它看起来像什么:
在许多情况下,一切都显示得很好,但有时我会得到错误的结果:在应用程序启动时,第一张图像将屏幕与下面一张图像分开,我不知道为什么会发生这种情况
谢谢你的帮助
# 1 楼答案
我认为在本例中,您应该使用支持库v4中的ViewPager,而不是这个自定义的水平滚动视图。它就是为这个目的而设计的
下面是如何使用它https://developer.android.com/training/animation/screen-slide.html
# 2 楼答案
使用重力=重力解决了问题。水平填充|重力。我在图像视图(方法ImageUtils.scaleImage)上以编程方式设置的垂直中心