android GridView多选效果的实例代码

所属分类: 软件编程 / Android 阅读数: 961
收藏 0 赞 0 分享

具体代码如下:

main.xml

复制代码 代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:background="#000000"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    tools:context=".MainActivity" >

   <GridView

       android:layout_width="fill_parent"

       android:layout_height="fill_parent"

       android:id="@+id/grid"

       android:verticalSpacing="3dp"

       android:horizontalSpacing="3dp"

       android:numColumns="3"

       ></GridView>

</LinearLayout>

item.xml

复制代码 代码如下:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

<ImageView

    android:scaleType="fitXY"

    android:padding="3dp"

    android:layout_height="70dp"

    android:layout_width="70dp"

    android:id="@+id/image_item"

    />

</LinearLayout>


mainActivity.java
复制代码 代码如下:

package com.imageview;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.AdapterView.OnItemClickListener;


public class MainActivity extends Activity {
private Adpter adpter;
private GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int [] image={R.drawable.dog1,R.drawable.m2,R.drawable.m3,R.drawable.m4,R.drawable.m5,R.drawable.dog2};
adpter=new Adpter(image, this);
gridView=(GridView) findViewById(R.id.grid);
gridView.setAdapter(adpter);
gridView.setOnItemClickListener(new OnItemClickListener() {  
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,  
                            int position, long arg3) {  
            adpter.chiceState(position);
            }  
    });  
}
}

Adpter.java

复制代码 代码如下:

package com.imageview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class Adpter extends BaseAdapter {
private int[] image;
private boolean isChice[];
private Context context;

public Adpter(int[] im, Context context) {
this.image = im;
Log.i("hck", im.length+"lenght");
isChice=new boolean[im.length];
for (int i = 0; i < im.length; i++) {
isChice[i]=false;
}
this.context = context;
}

@Override
public int getCount() {
return image.length;
}

@Override
public Object getItem(int arg0) {
return image[arg0];
}

@Override
public long getItemId(int arg0) {
return arg0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
View view = arg1;
GetView getView=null;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.item, null);
getView = new GetView();
getView.imageView=(ImageView) view.findViewById(R.id.image_item);
view.setTag(getView);
} else {
getView = (GetView) view.getTag();
}
getView.imageView.setImageDrawable(getView(arg0));

return view;
}

static class GetView {
ImageView imageView;
}

    //主要就是下面的代码了
private LayerDrawable getView(int post) {

Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(image[post])).getBitmap();
Bitmap bitmap2=null;
LayerDrawable la=null;
if (isChice[post]== true){ 
bitmap2 = BitmapFactory.decodeResource(context.getResources(),
R.drawable.editable_mode_checked_tag);
}
if (bitmap2!=null) {
Drawable[] array = new Drawable[2];
array[0] = new BitmapDrawable(bitmap);
array[1] = new BitmapDrawable(bitmap2);
la= new LayerDrawable(array);
la.setLayerInset(0, 0, 0, 0, 0);   //第几张图离各边的间距
la.setLayerInset(1, 0, 65, 65, 0);
}
else {
Drawable[] array = new Drawable[1];
array[0] = new BitmapDrawable(bitmap);
la= new LayerDrawable(array);
la.setLayerInset(0, 0, 0, 0, 0);
}
return la; // 返回叠加后的图
}
public void chiceState(int post)
{
isChice[post]=isChice[post]==true?false:true;
this.notifyDataSetChanged();
}
}

更多精彩内容其他人还在看

android byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多