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;}});}
}

android 使用GridView实现Gallery的效果,并且从最左边开始相关推荐

  1. Android的GridView和Gallery结合Demo

    Demo介绍:首页是一个GridView加载图片,竖屏时显示3列图片,横屏时显示4列图片;并且对图片进行大小限制和加灰色边框处理. 点击某一张图片,会链接到Gallery页面,由于Android自带的 ...

  2. android gridview行分割线,Android使用GridView实现表格分割线效果

    使用gridview实现表格分割线效果,网格布局表格布局也是可以实现的. 效果如下: 1.主函数代码: package com.example.qd.douyinwu; import android. ...

  3. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果...

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/20481185),请尊重他人的辛勤劳动成果,谢谢! 大家好! ...

  4. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  5. Android UI控件之Gallery(拖动效果) --拖动式图片浏览

    我们知道现在智能手机上都有这样一种功能,就是你在浏览图片的时候.不是硬性的点击按钮 而是可以实现手指的拖动,划开效果.使用户具有更好的交互体验,不过这种效果是如何实现的呢? 在Android中是通过G ...

  6. 【Android UI】案例01Cover Flow3D效果的实现(Gallery+BaseAdapter)

    本例主要介绍CoverFlow3D的实现.首先介绍一下Cover Flow.Cover Flow是苹果首创的将多首歌曲的封面以3D界面的形式显示出来的方式. 本案例摘自网络http://www.cnb ...

  7. Android实现GridView的item长按拖动删除完美实现(带动画效果)

    领导这几天让做一个项目,就是可以实现像支付宝首页一样的可以长按拖动,删除的界面,以前没做过,领导让我做的时候觉得简直是老虎吃天,无从下手啊,可是领导的任务还是要实现的,没办法,就自己网上找咯,但是网上 ...

  8. android使用gridview的书架效果

    android使用gridview的书架效果,需要使用自定义的gridview来填充每行的背景,核心代码如下: BookGridView.java /*** 书架效果**/ public class ...

  9. Android中GridView的实现实例

    实现效果: activity文件代码: package com.tmacsky; import android.app.Activity; import android.os.Bundle; impo ...

最新文章

  1. 网易盖楼回复的简易实现
  2. Java 8 Lambda
  3. 使用ReportStudio打开cube模型创建报表出现两个最细粒度名称
  4. desktop docker 无法卸载_关于Docker:Docker – 无法移除死容器
  5. vs2017 圈复杂度_2017年有趣而复杂的法律问题
  6. mysql+1.6安装,CentOS 6.6服务器编译安装lnmp(Nginx1.6.2+MySQL5.6.21+PHP5.6.3
  7. STM32神舟III号 驱动直流电机学习(四 )
  8. toolchain安装教程支持_【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法...
  9. 2021年N1叉车司机考试总结及N1叉车司机复审考试
  10. android 手写字体识别,Android手写识别 (Tesseract-OCR的使用)
  11. mars2d解决底图上下拖动超出边界出现灰色底
  12. 淘宝技术发展(Oracle/支付宝/旺旺)
  13. 商业大数据分析报告选题与背景撰写技巧
  14. 北邮工程计算-知识点索引--十安辰
  15. 安装nodejs时提示Leaving directory
  16. 渗透测试工程师的职业发展
  17. Android实现圆形图像的两种方法(Glide和Picasso)
  18. codeforces 332b Maximum Absurdity dp
  19. DELLEMC S4048
  20. Java相关课程系列笔记之一Java学习笔记

热门文章

  1. 游戏人生Silverlight(6) - 贪吃蛇[Silverlight 3.0(c#)]
  2. 数据库访问技术(二)---ADO.NET
  3. ArchLinux借助Winetricks-zh安裝WineQQ8.1
  4. 在jexus下如何简单的配置多站点
  5. 悲观锁 HibernateTest.java
  6. 创建SSIS包—建立端到端的package
  7. 推荐游戏玩家使用金山密保保护帐号安全
  8. .net控件开发系列
  9. 4周第4次课 压缩打包介绍 gzip bzip2 xz压缩工具
  10. 王爽《汇编语言》第2版-----2、寄存器