效果如下图:
1.首先设计man.xml这里使用HorizontalScrollView结合GridView实现Gallery的左右滚动效果,并且解决了Gallery从中间开始的问题,GridView可以从最左边开始显示。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- Gallery view 图片效果图 -->
<HorizontalScrollView
android:id="@+id/galleryScroll"
android:layout_width="fill_parent"
android:layout_height="90dip"
android:scrollbars="none"
android:focusable="false"
android:layout_alignParentBottom="true"
android:background="@drawable/gallerybackground"
>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="false"
>
<!--注意这里 宽度一定要设置不然不能达到效果 -->
<LinearLayout
android:layout_width="770dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:focusable="false"
>
<GridView android:id="@+id/gallery"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:horizontalSpacing="1.0dip"
android:verticalSpacing="1.0dip"
android:stretchMode="spacingWidthUniform"
android:numColumns="auto_fit"
android:columnWidth="70dip"
android:focusable="false"
>
</GridView>
</LinearLayout>
</FrameLayout>
</HorizontalScrollView>
</LinearLayout>
2.图片列表适配的实现,如下:
package com.src;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends BaseAdapter{
private static String[] effectTitle = {"原图", "柔光", "LOMO", "复古", "古典", "黑白",
"淡雅", "哥特风", "暖化", "水印", "印象"};
private static int[] effectDrawable = {R.drawable.lomoeffect_01, R.drawable.lomoeffect_02,
R.drawable.lomoeffect_03, R.drawable.lomoeffect_04,
R.drawable.lomoeffect_05, R.drawable.lomoeffect_06,
R.drawable.lomoeffect_07, R.drawable.lomoeffect_08,
R.drawable.lomoeffect_09, R.drawable.lomoeffect_10,
R.drawable.lomoeffect_11};
private ArrayList<GalleryInfo> list;
private LayoutInflater inflater;
public ImageAdapter(Context context) {
super();
list = new ArrayList<GalleryInfo>();
inflater = LayoutInflater.from(context);
// 初始化数据
for (int i=0; i<effectDrawable.length; i++) {
GalleryInfo info = new GalleryInfo();
info.title = effectTitle[i];
info.drawable = effectDrawable[i];
if (i ==0 ) {
//默认第一项问选中
info.isSelect = true;
} else {
info.isSelect = false;
}
list.add(info);
}
}
public int getCount() {
return effectTitle.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.gallery_item, null);
holder = new ViewHolder();
holder.effectTitle = (TextView)convertView.findViewById(R.id.effectTitle);
holder.effectDrawable = (ImageView)convertView.findViewById(R.id.effectDrawable);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.effectTitle.setText(list.get(position).title);
holder.effectDrawable.setImageResource(list.get(position).drawable);
if (list.get(position).isSelect) {//被选中的选项加选中的背景框
holder.effectDrawable.setBackgroundResource(R.drawable.gallery_select);
}else {//未被选中的选项设置背景透明
holder.effectDrawable.setBackgroundDrawable(null);
}
// notifyDataSetChanged();
return convertView;
}
public void changeStatus(int select) {
for (int i=0; i<list.size(); i++) {
list.get(i).isSelect = false;
}
list.get(select).isSelect = true;
}
private class ViewHolder {
TextView effectTitle;
ImageView effectDrawable;
}
class GalleryInfo {
public String title;
public int drawable;
public boolean isSelect;
}
}
3.测试实例效果,代码如下:
package com.src;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
public class GrideToGalleryActivity extends Activity {
private GridView gallery;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageAdapter adapter = new ImageAdapter(this);
gallery = (GridView)findViewById(R.id.gallery);
gallery.setAdapter(adapter);
gallery.setNumColumns(11);
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int select,
long arg3) {
adapter.changeStatus(select);//设置选中项
adapter.notifyDataSetChanged();//更新列表
}
});
gallery.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
v.clearFocus();
return false;
}
});
}
}
源代码附件
- 大小: 163.8 KB
分享到:
相关推荐
在某些情况下,Gallery的效果可能不尽如人意,这时开发者可能会选择使用GridView来模拟实现Gallery的效果。下面将详细解释如何使用GridView实现类似Gallery的功能,以及如何添加点击选中效果。 首先,我们需要理解...
在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,为用户提供流畅的交互体验。本主题主要聚焦于两种常见...通过实践,你将能够熟练掌握Android Gallery和GridView的滑动效果,并能灵活运用到自己的项目中。
在Android开发中,有时我们需要创建一个可滚动的视图,其中包含多个可点击或交互的项目,这通常可以通过使用Gallery控件来实现。然而,Gallery控件存在一些限制,例如在其两端会保留一定的空白区域,这可能不符合...
在本篇文章中,我们将深入探讨如何在Android中使用GridView来实现类似Gallery的滑动体验,并防止滑动过快导致的用户体验不佳问题。 首先,我们需要了解GridView的基本用法。GridView继承自AbsListView,它将数据...
本项目“一个简单的相册GridView、Gallery的结合使用”恰好展示了如何整合这两个组件来实现这一功能。GridView和Gallery都是Android提供的布局控件,它们在显示数据集方面有各自的优势。 ** GridView详解:** ...
在早期的Android版本中,`Gallery`是实现轮播效果或者选择器的理想选择。然而,由于API 17(Android 4.2)中`Gallery`已被废弃,开发者通常转向其他替代方案,如`ViewPager`。尽管如此,理解`Gallery`的工作原理对于...
Android GridView,Gallery动态更新数据(整理自网络)
android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo 免费下载 给个好评!
在数据源适配器知识点上面,我们可以自己定义一个数据源适配器,要继承BaseAdapter,实现getView的方法 画廊控件:gallery imageswitch HorizontalScrollView,在一个屏幕上显示出超过屏幕尺寸的内容
本教程将介绍如何使用GridView来实现类似Gallery的功能,并确保它从最左边开始滑动。 首先,我们需要理解GridView的基本用法。GridView是一种可以显示二维网格布局的视图,通常用于显示大量小图标或者图片,每个...
在Android早期版本中,`Gallery`被广泛用来创建类似相册的3D效果,尽管在API 16之后,它被`GridView`和`RecyclerView`等更灵活的视图替代。然而,通过一些自定义实现,我们仍然可以创建出类似`Gallery 3D`的效果。 ...
Demo介绍:首页是一个GridView加载图片,竖屏...点击某一张图片,会链接到Gallery页面,由于Android自带的Gallery控件滑动效果很不好(滑动一次会加载好多张图片),这里对Gallery进行了扩展,滑动一次只加载一张图片。
Gallery是Android早期的一个组件,它允许用户水平滚动查看多个项目,但由于API等级限制,从Android 5.0(API级别21)开始被废弃。然而,我们可以通过继承HorizontalScrollView并添加必要的触摸事件处理,来复现...
本文实例讲述了Android编程滑动效果之Gallery+GridView实现图片预览功能。分享给大家供大家参考,具体如下: Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以...
在Android平台上,`Gallery`组件曾经是实现3D滚动效果的一种流行方式,它允许用户以横向滑动的方式浏览图片或项目列表,同时提供了一种视觉上的立体感。然而,随着Android版本的更新,`Gallery`组件在API 16...
在Android开发中,...总的来说,"ListView之+GridView+Gallery图片计时滚动"这个主题涵盖了Android UI开发中的基础组件和常见的滚动效果实现,对于Android开发者来说,掌握这些知识将有助于构建更丰富的用户界面。
Android开发中的`Gallery`和`GridView`都是用于展示数据的视图组件,常用于创建图像或者项目的列表。在本文中,我们将深入探讨这两个组件的特性和使用方法。 ### Gallery组件详解 `Gallery`是一个水平滚动的视图,...
An Android GridView that can be configured to scroll horizontally or vertically. I should have posted this over a year and a half ago, but never got around to it. I needed a grid view that in portrait...
例如,在数据更新或插入时,使用`android.widget.Gallery`的动画效果,或者自定义`Animator`来实现更个性化的动画。 7. **Header和Footer** 如果需要在GridView头部或尾部添加额外的信息或操作按钮,可以通过`...
与Gallery不同,GridView允许垂直和水平滚动,并且每个单元格可以有不同的宽度和高度。 1. GridView常用属性: - `android:numColumns`:设置GridView显示的列数,可以是自动适应屏幕宽度的整数值(例如"auto_fit...