`

2013.09.22——— android GridView行背景

 
阅读更多
2013.09.22——— android GridView行背景

package com.sina.show.activity.custom;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.view.ViewGroup;
import android.widget.GridView;

import com.sina.show.R;

/**
 * 设置一行的背景
 *
 * @ClassName: MyGridView 
 * @date 2012-10-29 下午04:25:01 
 *
 */
public class MyGridViewLineBackground extends GridView {
	private static String NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android";
	private Bitmap mBmp;
	private int mColumnNum;
	private int mRowBgHeight;
	public MyGridViewLineBackground(Context context, android.util.AttributeSet attrs) {
		super(context, attrs);
		mBmp = BitmapFactory.decodeResource(getResources(), R.drawable.room_more_line);  
		//获得列数
		mColumnNum = attrs.getAttributeIntValue(NAMESPACE_ANDROID,"numColumns",3);
		//
		mRowBgHeight = 23;
	}

	@Override
	protected void dispatchDraw(Canvas canvas) {   
		//图片的行高
        int rHeight = ((ViewGroup)getChildAt(0)).getChildAt(0).getHeight();
        int width = getWidth();
        int rowNum = (int)Math.ceil(getChildCount()/(double)mColumnNum);
        //源绘制矩形
        Rect src = new Rect(0,0,mBmp.getWidth(),mBmp.getHeight());
        for(int i=0,y=rHeight-mRowBgHeight; i<rowNum; i++,y += rHeight){
            //目的绘制矩形
            Rect dst = new Rect(0,y,width,y+mRowBgHeight);
            canvas.drawBitmap(mBmp,src,dst,null);
        }
        super.dispatchDraw(canvas);   
	} 
}



使用

<com.sina.show.activity.custom.MyGridViewLineBackground
				    android:layout_width="fill_parent"
				    android:layout_height="wrap_content"
				    android:id="@+id/room_main_bottom_grd_more"
					android:cacheColorHint="#00000000" 
					android:listSelector="#00000000"
					android:layout_weight="1"
					android:fadingEdge="none"
					android:numColumns="3"
					android:layout_marginTop="10dip"
					android:horizontalSpacing="0dip"
					android:paddingLeft="20dip"
        			android:paddingRight="20dip"
				    />
分享到:
评论

相关推荐

    安卓Android源码——gridview分页效果.zip

    "安卓Android源码——gridview分页效果.zip"这个压缩包可能包含了一个实现GridView分页效果的示例项目。HorizontalGridView是GridView的一个扩展,它使得数据可以横向滚动,提供了更丰富的界面展示方式。 首先,...

    安卓Andriod源码——gridview分页效果.zip

    gridView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) {} @Override public void onScroll(AbsListView view...

    Android源码——GridView拖拽实例源码_new_07.7z

    这个“Android源码——GridView拖拽实例源码_new_07.7z”压缩包包含了实现GridView拖拽功能的示例代码,对于学习如何增强用户交互体验非常有帮助。 GridView的基础知识: 1. **定义**:GridView继承自AbsListView,...

    android Gridview分页实现

    gridView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView ...

    安卓Android源码——gridview分页效果.rar

    这个"安卓Android源码——gridview分页效果.rar"文件很可能是包含了一个实现GridView分页效果的示例项目。分页在大数据量展示时尤为重要,因为它提高了用户体验,避免一次性加载大量数据导致应用性能下降或内存溢出...

    Android GridView实现一行显示并左右滚动

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { SharedPreferences.Editor editor ...

    安卓Android源码——android动态添加表格行.zip

    这个“安卓Android源码——android动态添加表格行.zip”压缩包可能包含了示例代码,用于演示如何在运行时动态创建并添加到表格布局(TableLayout)中。以下是对这个主题的详细讲解: 1. **表格布局(TableLayout)*...

    Android中文翻译组——Android中文API——android.widget合集(中)

    `Android中文翻译组——Android中文API——android.widget合集(中).chm`文件很可能是这个主题的中文参考手册,包含了这些控件的详细解释、使用示例和API文档,对于初学者来说是一份宝贵的资源。建议读者仔细阅读并...

    ——将GridView导出为PDF 通过itextsharp

    5. **允许全数据输出**:在转换前,`GridView.AllowPaging`属性被设置为`false`,目的是确保所有数据都能一次性输出到PDF,而不是只显示当前页的数据。 6. **Document对象**:iTextSharp库中的`Document`类代表PDF...

    Android源码——GridView拖拽实例源码_new_07.zip

    这个"Android源码——GridView拖拽实例源码_new_07.zip"文件提供了关于如何实现GridView元素拖拽功能的示例代码。这个功能在很多场景下都非常实用,比如在移动应用中调整图片顺序或者在文件管理器中重新排列文件。 ...

    Android Studio —— GridView(模仿魅蓝手机下拉窗口)

    gridView.setAdapter(new GridViewAdapter(this, R.layout.grid_item, dataList)); ``` 在`GridViewAdapter`中,`dataList`是包含要显示数据的列表,`R.layout.grid_item`是单个单元格的布局资源ID。在`grid_item....

    android学习——GridView

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { String selectedItem = items...

    Android GridView使用例子

    在Android开发中,GridView是一个非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、应用快捷方式或者菜单等界面。在这个"Android GridView使用例子"中,我们将深入探讨如何有效地利用...

    AndroidGridView点击每一个图片进入个人页面渐变特效.zip

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。这个"AndroidGridView点击每一个图片进入个人页面渐变特效.zip"压缩包包含的资源可能是一个示例项目,展示了如何在GridView中实现...

    安卓Android源码——GridView拖拽实例源码.zip

    本压缩包提供的“安卓Android源码——GridView拖拽实例源码”是一个实战案例,展示了如何实现GridView中的元素拖拽功能,这对于提升用户体验和增强应用交互性具有重要意义。 首先,我们需要理解GridView的基本用法...

    Android 简单GridView使用.rar

    gridView.setAdapter(adapter); ``` 这里,`dataList`是存储数据的列表,`item_layout`是单个单元格的布局文件。 4. 单元格布局:在`item_layout.xml`中设计每个单元格的外观,例如: ```xml &lt;LinearLayout xmlns:...

Global site tag (gtag.js) - Google Analytics