`

android之GridView和Gallery

 
阅读更多

GridView:

/activity_main.xml

<RelativeLayout 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">


<GridView
android:id="@+id/gvGenerals"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="60dp"
android:horizontalSpacing="2dp"
android:verticalSpacing="20dp"
android:numColumns="auto_fit"
/>



</RelativeLayout>

java代码:

package com.example.day05_01;


import java.util.ArrayList;
import java.util.List;


import com.litsoft.entity.General;




import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity {
private List<General> generals;//要显示的数据集合
private GridView gvGenerals;//GridView对象
private BaseAdapter generalAdapt;//适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化要显示的数据集合、ListView对象、以及适配器
setListener();//设置按item事件
}



private void setListener() {
// TODO Auto-generated method stub
//短按事件监听
gvGenerals.setOnItemClickListener(new OnItemClickListener() {


@Override

public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, generals.get(position).getName()+":被短按 ", 50000).show();
}

});

//长按事件监听
gvGenerals.setOnItemLongClickListener(new OnItemLongClickListener() {


@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, generals.get(position).getName()+":被长按 ", 50000).show();
return true;//1、如果返回false,长按后,他也会触发短按事件2、如果返回true的话,长按后就不会触发短按事件
}
});
}


private void init() {
// TODO Auto-generated method stub
//初始化要显示的数据集合---start
generals = new ArrayList<General>();
//图片资源集合
int[] resImags = {
R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
R.drawable.zhuyuanzhang
};
//将资源中的字符串组数转换为Java数组
String [] names = getResources().getStringArray(R.array.generals);
for (int i =0;i<resImags.length;i++){
General general = new General(resImags[i],names[i]);
generals.add(general);
}
//初始化要显示的数据集合---end
//初始化listView
gvGenerals = (GridView) findViewById(R.id.gvGenerals);
//初始化适配器以及设置该listView的适配器
generalAdapt = new GeneralAdapter();
gvGenerals.setAdapter(generalAdapt);
}

class GeneralAdapter extends BaseAdapter {

//得到listView中item的总数
@Override
public int getCount() {
// TODO Auto-generated method stub
return generals.size();
}


@Override
public General getItem(int position) {
// TODO Auto-generated method stub
return generals.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


//简单来说就是拿到单行的一个布局,然后根据不同的数值,填充主要的listView的每一个item
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//拿到ListViewItem的布局,转换为View类型的对象
View layout = View.inflate(MainActivity.this, R.layout.activity_item_generals_, null);
//找到显示军事家头像的ImageView
ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);
//找到显示军事家名字的TextView
TextView tvName = (TextView) layout.findViewById(R.id.tvName);
//获取军事中下标是position的军事家对象
General general = generals.get(position);
//显示军事家头像
ivThumb.setImageResource(general.getImageSrc());
//显示军事家的姓名
tvName.setText(general.getName());

return layout;
}

}


}

适配布局页面 :layout\activity_item_generals_.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">


<ImageView
android:id="@+id/ivThumb"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/baiqi"/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:text="白起"
android:textSize="20sp"
android:gravity="center_horizontal"
/>


</LinearLayout>

strings.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>


<string name="app_name">Day05_01</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_item_generals_">ItemGenerals_Activity</string>
<string-array name="generals">
<item>白起</item>
<item>曹操</item>
<item>成吉思汗</item>
<item>韩信</item>
<item>李世民</item>
<item>努尔哈赤</item>
<item>孙膑</item>
<item>孙武</item>
<item>朱元璋</item>
<item>岳飞</item>
</string-array>
</resources>

将军资源java对象:

package com.litsoft.entity;


public class General {
private int imageSrc;
private String name;
public int getImageSrc() {
return imageSrc;
}
public void setImageSrc(int imageSrc) {
this.imageSrc = imageSrc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public General(int imageSrc, String name) {
super();
this.imageSrc = imageSrc;
this.name = name;
}

}

效果:


Gallery:

 

/activity_main.xml

<RelativeLayout 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">


<Gallery
android:id="@+id/gvGenerals"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spacing="2dp"
/>



</RelativeLayout>

java代码:

package com.example.day05_01;


import java.util.ArrayList;
import java.util.List;


import com.litsoft.entity.General;




import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity {
private List<General> generals;//要显示的数据集合
private Gallery gvGenerals;//GridView对象
private BaseAdapter generalAdapt;//适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化要显示的数据集合、ListView对象、以及适配器
setListener();//设置按item事件
}



private void setListener() {
// TODO Auto-generated method stub
//短按事件监听
gvGenerals.setOnItemClickListener(new OnItemClickListener() {


@Override

public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, generals.get(position).getName()+":被短按 ", 50000).show();
}

});

//长按事件监听
gvGenerals.setOnItemLongClickListener(new OnItemLongClickListener() {


@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, generals.get(position).getName()+":被长按 ", 50000).show();
return true;//1、如果返回false,长按后,他也会触发短按事件2、如果返回true的话,长按后就不会触发短按事件
}
});
}


private void init() {
// TODO Auto-generated method stub
//初始化要显示的数据集合---start
generals = new ArrayList<General>();
//图片资源集合
int[] resImags = {
R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
R.drawable.zhuyuanzhang
};
//将资源中的字符串组数转换为Java数组
String [] names = getResources().getStringArray(R.array.generals);
for (int i =0;i<resImags.length;i++){
General general = new General(resImags[i],names[i]);
generals.add(general);
}
//初始化要显示的数据集合---end
//初始化listView
gvGenerals = (Gallery) findViewById(R.id.gvGenerals);
//初始化适配器以及设置该listView的适配器
generalAdapt = new GeneralAdapter();
gvGenerals.setAdapter(generalAdapt);
}

class GeneralAdapter extends BaseAdapter {

//得到listView中item的总数
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}


@Override
public General getItem(int position) {
// TODO Auto-generated method stub
return generals.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


//简单来说就是拿到单行的一个布局,然后根据不同的数值,填充主要的listView的每一个item
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//拿到ListViewItem的布局,转换为View类型的对象
View layout = View.inflate(MainActivity.this, R.layout.activity_item_generals_, null);
//找到显示军事家头像的ImageView
ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);
//找到显示军事家名字的TextView
TextView tvName = (TextView) layout.findViewById(R.id.tvName);
//获取军事中下标是position的军事家对象
General general = generals.get(position%10);
//显示军事家头像
ivThumb.setImageResource(general.getImageSrc());
//显示军事家的姓名
tvName.setText(general.getName());

return layout;
}

}


}

 

适配布局页面 :layout\activity_item_generals_.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">


<ImageView
android:id="@+id/ivThumb"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/baiqi"/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:text="白起"
android:textSize="20sp"
android:gravity="center_horizontal"
/>


</LinearLayout>

strings.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>


<string name="app_name">Day05_01</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_item_generals_">ItemGenerals_Activity</string>
<string-array name="generals">
<item>白起</item>
<item>曹操</item>
<item>成吉思汗</item>
<item>韩信</item>
<item>李世民</item>
<item>努尔哈赤</item>
<item>孙膑</item>
<item>孙武</item>
<item>朱元璋</item>
<item>岳飞</item>
</string-array>
</resources>

将军资源java对象:

package com.litsoft.entity;


public class General {
private int imageSrc;
private String name;
public int getImageSrc() {
return imageSrc;
}
public void setImageSrc(int imageSrc) {
this.imageSrc = imageSrc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public General(int imageSrc, String name) {
super();
this.imageSrc = imageSrc;
this.name = name;
}

}

效果:


 

分享到:
评论

相关推荐

    android 自定义gridView 按日期显示图片和视频 galleryDemo

    android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo 免费下载 给个好评!

    Android 滑动效果 Gallery + GridView

    本主题主要聚焦于两种常见的滑动组件:Gallery和GridView,它们都是Android SDK中内置的视图组件,常用于展示多张图片或者项目列表。下面我们将深入探讨这两个组件的特性、用法以及如何在实际项目中实现它们的滑动...

    Android GridView,Gallery动态更新数据(整理自网络)

    Android GridView,Gallery动态更新数据(整理自网络)

    Android的GridView和Gallery结合Demo

    Demo介绍:首页是一个GridView加载图片,竖屏...点击某一张图片,会链接到Gallery页面,由于Android自带的Gallery控件滑动效果很不好(滑动一次会加载好多张图片),这里对Gallery进行了扩展,滑动一次只加载一张图片。

    一个简单的相册GridView、Gallery的结合使用

    GridView和Gallery都是Android提供的布局控件,它们在显示数据集方面有各自的优势。 ** GridView详解:** GridView是一种可以显示多列、滚动的列表视图,常用于展示网格状的数据。在本项目中,GridView用于展示图片...

    GridView实现Gallery效果

    在Android开发中,GridView是一种常见的布局管理器,它允许我们以网格的形式展示数据集,而Gallery则是一个可以水平滚动的视图,常用于图片或项目的循环浏览。在某些情况下,Gallery的效果可能不尽如人意,这时...

    android控件ListView. GridView.gallery应用

    GridView添加数据源和ListView也是SimpleAdpater 在数据源适配器知识点上面,我们可以自己定义一个数据源适配器,要继承BaseAdapter,实现getView的方法 画廊控件:gallery imageswitch HorizontalScrollView,在一个...

    android gridView实现自定义gallery

    总的来说,虽然Android原生的Gallery控件有一定的局限性,但通过巧妙地使用GridView和自定义Adapter,我们可以定制出符合需求的滚动视图,实现更丰富的交互体验。这种技术在实际开发中非常实用,尤其是在需要展示一...

    ListView之+GridView+Gallery图片计时滚动

    在Android开发中,...总的来说,"ListView之+GridView+Gallery图片计时滚动"这个主题涵盖了Android UI开发中的基础组件和常见的滚动效果实现,对于Android开发者来说,掌握这些知识将有助于构建更丰富的用户界面。

    gridView 实现gallery滑动

    在某些场景下,开发者可能希望结合GridView和Gallery的功能,实现一个既具有网格布局又能横向平滑滑动的效果。在本篇文章中,我们将深入探讨如何在Android中使用GridView来实现类似Gallery的滑动体验,并防止滑动过...

    Android开发学习笔记 Gallery和GridView浅析

    Android开发中的`Gallery`和`GridView`都是用于展示数据的视图组件,常用于创建图像或者项目的列表。在本文中,我们将深入探讨这两个组件的特性和使用方法。 ### Gallery组件详解 `Gallery`是一个水平滚动的视图,...

    图片浏览(带水平滑动的GridView和带gallery的ViewPage)

    本教程主要探讨如何实现一个带有水平滑动的GridView以及一个具备Gallery功能的HorizontalScrollView,并且介绍如何在ViewPage中支持图片缩放和网络图片的显示。 首先,让我们来看看“带水平滚动的GridView”。传统...

    Android代码-水平或垂直双向滚动​​的AndroidGridView

    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...

    Gallery+GridView使用的demo

    在Android开发中,`Gallery`和`GridView`是两种常用的布局控件,它们常用于展示图像或数据集合。本示例"Gallery+GridView使用的demo"旨在演示如何在应用程序中有效地结合这两个控件来创建一个图片浏览体验。让我们...

    048-集-GridView和Gallery视频教程

    048-集-GridView和Gallery视频教程,很是不错哦,有兴趣的可以学习下。

    Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器

    具体说明可以参考博客:我的Android进阶之旅------&gt;Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器 博客地址:...

    Gallery和GridView浅析

    Gallery和GridView是Android开发中用于展示数据的两种控件,它们在界面设计中有着广泛的应用,特别是在图片展示和选择场景下。本文将详细解析这两个控件的特点、用法以及相关属性。 一、Gallery的详解 Gallery控件...

    Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)

    本文实例讲述了Android编程滑动效果之Gallery+GridView实现图片预览功能。分享给大家供大家参考,具体如下: Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以...

    android animation,gallery and gridview demo

    android 2.2 platform eclipse project source code,include more than 30 animation effect by java code and xml,slide by one item and loop gallery and dragable gridview.

    Android 自定义ListView + Gallery 组合

    在Android开发中,ListView和Gallery是两种常用的布局控件,它们可以用来展示大量的数据并提供良好的用户交互体验。本文将详细讲解如何在Android应用中实现自定义的ListView与Gallery组合,以及这两个组件的核心特性...

Global site tag (gtag.js) - Google Analytics