activity_main.xml
-------------------------------------------------------------------------------------------------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- HorizontalScrollView必须包含子元素才能增加视图 -->
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/mygallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" />
</HorizontalScrollView>
</LinearLayout>
MainActivity.java
-------------------------------------------------------------------------------------------------------------------------------
package com.horizontalscrollView;
import java.lang.reflect.Field;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
/**
*
* 项目名称:com.horizontalscrollView
* 类 名 称:MainActivity
* 类 描 述:HorizontalScrollView代替gallery效果
* 创 建 人:fy
* 创建时间:2014-3-17 下午10:36:10
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
private LinearLayout myGallery;
/* 图片ID集合 */
private static ArrayList<Integer> images = new ArrayList<Integer>();
/* 屏幕宽度(像素) */
private int width;
/* 屏幕高度(像素) */
private int height;
/* 屏幕密度(0.75 / 1.0 / 1.5) */
private float density;
/* 屏幕密度DPI(120 / 160 / 240) */
private int densityDpi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setImages();
setScreens();
findViews();
initdata();
}
private void findViews() {
myGallery = (LinearLayout) findViewById(R.id.mygallery);
}
private void initdata() {
for (Integer id : images) {
myGallery.addView(insertImage(id));
}
}
// 用反射机制来获取资源中的图片ID
private void setImages() {
Field[] fields = R.drawable.class.getDeclaredFields();
for (Field field : fields) {
if (!"icon".equals(field.getName())) {
int index = 0;
try {
index = field.getInt(R.drawable.class);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// 保存图片ID
images.add(index);
}
}
}
/* 手机屏幕属性 */
private void setScreens() {
// 定义DisplayMetrics 对象
DisplayMetrics metric = new DisplayMetrics();
// 取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(metric);
width = metric.widthPixels; // 屏幕宽度(像素)
height = metric.heightPixels; // 屏幕高度(像素)
density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
}
private View insertImage(Integer id) {
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setLayoutParams(new LayoutParams(width, height));
layout.setGravity(Gravity.CENTER);
ImageView imageView = new ImageView(getApplicationContext());
imageView.setLayoutParams(new LayoutParams(width, height));
imageView.setBackgroundResource(id);
layout.addView(imageView);
return layout;
}
}
效果
-------------------------------------------------------------------------------------------------------------------------------
<!--EndFragment-->
相关推荐
总的来说,HorizontalScrollView实现Gallery的方法是一种复用现有组件并进行定制的方式,它可以帮助开发者在不使用已被弃用的Gallery组件的情况下,实现类似的功能。这不仅有助于保持代码的兼容性,还能利用...
要模拟`Gallery`的效果,我们可以使用`HorizontalScrollView`或`RecyclerView`。下面分别介绍这两种方法: 1. **使用HorizontalScrollView**: - `HorizontalScrollView`是一个可以容纳单个子视图并支持水平滚动的...
然而,Gallery已在Android API Level 17中被弃用,开发者被推荐使用其他替代方案,如RecyclerView或HorizontalScrollView。HorizontalScrollView则是一个更基础的视图容器,它可以容纳一个或者多个水平排列的子视图...
"Gallery画廊控件"是Android SDK中一个独特的视图组件,它允许用户在一个水平滚动的列表中展示项目,通常用于图片或选择项的浏览。在本教程中,我们将深入探讨Gallery控件的用法、属性以及如何自定义它。 首先,...
在这个特定的实例中,我们将探讨如何通过自定义HorizontalScrollView打造一个强大的Gallery效果。 Gallery组件在早期版本的Android API中被广泛用于展示一系列的图片或元素,用户可以左右滑动来浏览。然而,随着...
HorizontalScrollView用于布局的容器,可以放置让用户使用滚动条查看的视图层次结构,允许视图结构比手机的屏幕大.。HorizontalScrollView 是一种 框架布局, 这意味着你可以将包含要滚动的完整内容的子视图放入该...
HorizontalScrollView是Android开发中一种特殊的视图容器,用于展示可以水平滚动的内容。它允许用户在水平方向上浏览多个视图,比如图片、按钮或者其他的UI元素。与常见的ListView不同,HorizontalScrollView通常...
在Android开发中,`ViewPager`和仿`Gallery`的`HorizontalScrollView`是两种常见的滚动视图组件。`ViewPager`主要用于实现页面间的滑动切换,通常用于实现类似TabLayout的效果;而`HorizontalScrollView`则允许用户...
在Android开发中,`HorizontalScrollView`是一个非常实用的布局组件,它允许用户通过水平滑动来查看超过屏幕宽度的内容。这个组件通常用于实现图片轮播、菜单滚动等效果。在这个"horizontalscrollView"项目中,我们...
在Android开发中,"画廊试图Gallery"是一个常见的组件,用于展示图像集合,让用户能够浏览并选择图片。这个RAR文件包含的资源可能是一个示例项目,用于演示如何创建和使用自定义的Gallery视图。虽然无法一一验证每个...
在本例中,"HorizontalScrollView 创建的 Gallery" 指的是利用 HorizontalScrollView 来实现类似传统 Gallery 组件的效果。在 Android 的早期版本中,Gallery 是一个可以左右滑动来浏览多个项目的控件,但在后来的...
在Android开发中,"画廊"(Gallery)是一种常见的组件,用于展示图片或者选择多项内容。这个名为"画廊gallery"的项目很可能是提供了一个简单的Android应用实例,用于实现一个可滚动浏览图片的画廊功能。下面将详细...
与普通的ScrollView不同,ScrollView默认是垂直滚动,而HorizontalScrollView则支持水平方向的滚动。 在创建自定义HorizontalScrollView时,我们通常会重写onMeasure()和onLayout()方法,以实现特定的滚动行为和...
需要注意的是,Gallery组件在Android API 26(Oreo)之后已被弃用,开发者应转向使用`RecyclerView`或其他替代方案,如`HorizontalScrollView`配合`SnapHelper`。 在提供的源码中,"本源码使用帮助.txt"可能包含了...
HorizontalScrollView是Android开发中一种特殊的视图容器,它允许用户水平滚动一组子视图,比如在有限的屏幕空间内展示多个按钮或者图片。这个“HorizontalScrollView横向显示Demo”旨在教授如何在Android应用中有效...
HorizontalScrollView是Android SDK中提供的一种视图容器,它允许用户水平滑动一组子视图,类似于ScrollView在垂直方向上的操作。在这个"无限滚动的HorizontalScrollView"项目中,开发者尝试实现了一个特殊的滚动...
在Android开发中,`HorizontalScrollView`是一个非常重要的布局组件,它允许用户在水平方向上滚动内容,这在创建横向滑动菜单、轮播图或图片画廊等场景中非常常见。本教程将深入探讨如何利用`HorizontalScrollView`...
本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限循环、自动跳转以及倒影效果。 首先,我们需要理解`Gallery`组件。`Gallery`是Android提供的一个HorizontalScrollView的扩展,用于...