广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    android GridView多选效果的实例代码

    2018-04-08 09:02:48 次阅读 稿源:互联网
    广告

    具体代码如下:

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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告