【自定义控件】 ------- GridView

【自定义控件】 ------- GridView

    <cn.com.karl.view.MyGridView

        android:id="@+id/bookShelf"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:layout_below="@id/head"

        android:cacheColorHint="#00000000"

        android:columnWidth="90.0dip"

        android:fadingEdge="none"

        android:horizontalSpacing="5dp"

        android:listSelector="#00000000"

        android:numColumns="3"

        android:scrollbars="none"

        android:verticalSpacing="20dp" />

 

public class MyGridView extends GridView {



    private Bitmap background;



    public MyGridView(Context context, AttributeSet attrs) {

        super(context, attrs);

        background = BitmapFactory.decodeResource(getResources(),

                R.drawable.bookshelf_layer_center);

    }



    @Override

    protected void dispatchDraw(Canvas canvas) {

        int count = getChildCount();

        int top = count > 0 ? getChildAt(0).getTop() : 0;

        int backgroundWidth = background.getWidth();

        int backgroundHeight = background.getHeight() + 2;

        int width = getWidth();

        int height = getHeight();



        for (int y = top; y < height; y += backgroundHeight) {

            for (int x = 0; x < width; x += backgroundWidth) {

                canvas.drawBitmap(background, x, y, null);

            }

        }

        super.dispatchDraw(canvas);

    }



}

 

public class CopyOfBookShelfActivity extends BaseActivity {

    private GridView bookShelf;

    private int[] data = { R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,

            R.drawable.cover_txt, R.drawable.cover_txt



    };

    private String[] name = { "天龙八部", "搜神记", "水浒传", "黑道悲情" };

    private GridView gv;

    private Button iv;

    private List<ResolveInfo> apps;



    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.main);



        bookShelf = (GridView) findViewById(R.id.bookShelf);

        ShlefAdapter adapter = new ShlefAdapter();

        bookShelf.setAdapter(adapter);

        bookShelf.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

                    long arg3) {

                if (arg2 >= data.length) {



                } else {

                    Toast.makeText(getApplicationContext(), "" + arg2,

                            Toast.LENGTH_SHORT).show();

                }

            }

        });

        loadApps();

        gv = (GridView) findViewById(R.id.allApps);

        iv = (Button) findViewById(R.id.imageViewIcon);

        gv.setAdapter(new GridAdapter());

    }



    class ShlefAdapter extends BaseAdapter {

        @Override

        public int getCount() {

            return data.length + 5;

        }

        @Override

        public Object getItem(int arg0) {

            return arg0;

        }

        @Override

        public long getItemId(int arg0) {

            return arg0;

        }

        @Override

        public View getView(int position, View contentView, ViewGroup arg2) {

            contentView = LayoutInflater.from(getApplicationContext()).inflate(

                    R.layout.item1, null);

            TextView view = (TextView) contentView

                    .findViewById(R.id.imageView1);

            if (data.length > position) {

                if (position < name.length) {

                    view.setText(name[position]);

                }

                view.setBackgroundResource(data[position]);

            } else {

                view.setBackgroundResource(data[0]);

                view.setClickable(false);

                view.setVisibility(View.INVISIBLE);

            }

            return contentView;

        }



    }



    private void loadApps() {

        Intent intent = new Intent(Intent.ACTION_MAIN, null);

        intent.addCategory(Intent.CATEGORY_LAUNCHER);

        apps = getPackageManager().queryIntentActivities(intent, 0);

    }



    public class GridAdapter extends BaseAdapter {

        public GridAdapter() {

        }



        public int getCount() {

            return apps.size();

        }



        public Object getItem(int position) {

            return apps.get(position);

        }



        public long getItemId(int position) {

            return position;

        }



        public View getView(int position, View convertView, ViewGroup parent) {



            ImageView imageView = null;

            if (convertView == null) {

                imageView = new ImageView(CopyOfBookShelfActivity.this);

                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

                imageView.setLayoutParams(new GridView.LayoutParams(50, 50));

            } else {

                imageView = (ImageView) convertView;

            }

            ResolveInfo ri = apps.get(position);

            imageView.setImageDrawable(ri.activityInfo

                    .loadIcon(getPackageManager()));

            return imageView;

        }

    }



}

 

完整代码下载地址:http://download.csdn.net/detail/androidsj/5336085

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(GridView)