android GridView多选效果的实例代码

2016-02-19 09:24 7 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享android GridView多选效果的实例代码,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

具体代码如下:

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

       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"

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1590650.html

延伸阅读
以前也模仿者ireader实现了书架的效果,但是那种是使用listview实现的,并不好用。绝大多数都是用gridview实现的,网上这方面资料比较少,有些开源的电子书都是重点做了阅读,并没有像ireader和QQ阅读这样的书架效果。 书架这种效果我早就实现了,本来想做一个完美的电子书,但是因为自己的懒惰,仅仅持续了一两天,今天又找到了以前的代码分...
功能说明: 滑动展开/收缩广告效果,可指定:广告完全展开时的停留时间,最大高度 兼容浏览器: IE5.0+、FF1.06+、Opera8.0+ 实例代码:  <!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"  <html x...
标签: Web开发
一直觉得帕兰的 Google Adsense 广告修饰得很漂亮。使用背景图片可以很方便地实现这个投影效果,不过使用 CSS 就足以实现。 以创建一个 300×250 尺寸的广告投影为例: div class="google"div class="shadow"!-- 300x250 --/divdiv class="adsense"!-- Google Adsense --/div/div 这三个 div 容器中...
一、首先,我们来看一下效果图,这是新浪微博的Tab滑动效果。我们可以手势滑动,也可以点击上面的头标进行切换。与此同方式,白色横条会移动到相应的页卡头标下。这是一个动画效果,白条是缓慢滑动过去的。好了,接下来我们就来实现它。 二、在开始前,我们先要认识一个控件,ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来...
手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理。 采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗? 采用第二种的在平板电脑里没有效果。 最后还是代码的方式方便快捷。。。 [java] 代码如下: //遍历设置字体  public static void changeViewSize(...

经验教程

82

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部