【自定义控件】 ------- 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

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 有人用过查询分析器里的TSQL调试程序吗?
  2. MySQL锁机制及优化
  3. MySQL存储过程简介
  4. 【原创】Mysql中select的正确姿势
  5. 利用闪回恢复MySQL误操作数据-DML
  6. PL\SQL 客户端配置 windows 64 ORACLE
  7. 如何:在SQL Server 2005中管理多个重叠索
  8. 比比谁的单条SQL语句最长。先看我的:
  9. Oracle Pro*c 中sqlca以及oraca的定义和
  10. PostgreSQL的数据存储(十七)---数据存储