android ListView实现圆角实例教程二

Android框架浅析之锁屏(Keyguard)机制原理

http://www.eoeandroid.com/thread-181604-1-1.html

andriod一个不错的启动菜单显示屏动画效果(转载)

http://www.eoeandroid.com/thread-171965-1-1.html

分享一个短信应用源码

http://www.eoeandroid.com/thread-179723-1-1.html

对于简短的listview,加上如上面这些比较死的数据,我们完全没有必要用listview来实现,TableLout完全够了.主要是我们怎么实现带有弧度的边罢了,不过这也完全得力于shape的功劳,至于点击效果效果嘛,我们有selector,下面介绍下实现:

配置文件部分代码:

    <ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none" ><LinearLayoutandroid:id="@+id/ll_main"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"android:paddingLeft="10dp"android:paddingRight="10dp" ></LinearLayout></ScrollView>

很简单,我们主要用这个Linerlayout来呈放我们的Table.

实现代码:

package com.jj.corner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.R.color;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class MainActivity2 extends Activity {private LinearLayout ll_main;private TableLayout tableLayout;private LinearLayout.LayoutParams layoutParams;private static final String MSG_0[] = { "jjhappyforever" };private static final String MSG_1[] = { "天气动画", "通知栏天气" };private static final String MSG_2[] = { "桌面插件", "绑定微博", "天气分享", "通知与提示","定时播报" };private static final String MSG_3[] = { "检查新版本", "发送建议", "帮助", "关于" };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main2);ll_main = (LinearLayout) findViewById(R.id.ll_main);showTable();}/**** 显示table*/public void showTable() {layoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParams.bottomMargin = 30;layoutParams.topMargin = 10;ll_main.addView(getTable(MSG_0), layoutParams);ll_main.addView(getTable(MSG_1), layoutParams);ll_main.addView(getTable(MSG_2), layoutParams);ll_main.addView(getTable(MSG_3), layoutParams);}/**** 获取Table* * @param array* @return*/public TableLayout getTable(String[] array) {tableLayout = new TableLayout(this);tableLayout.setLayoutParams(layoutParams);tableLayout.setStretchAllColumns(true);for (int i = 0; i < array.length; i++) {TableRow tableRow = new TableRow(this);View view = getView(array[i], i, array.length);tableRow.addView(view);tableLayout.addView(tableRow);}return tableLayout;}/***** * @param msg*            显示信息* @param current_Id*            当前个数* @param totle_Num*            总个数* @return*/public View getView(String msg, int current_Id, int totle_Num) {LinearLayout linearLayout = new LinearLayout(this);LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);layoutParams1.height = 1;linearLayout.setOrientation(1);// 创建分割线View line = new View(this);line.setLayoutParams(layoutParams1);line.setBackgroundColor(getResources().getColor(R.color.black));View view = LayoutInflater.from(MainActivity2.this).inflate(R.layout.item, null);view.setBackgroundDrawable(new BitmapDrawable());view.setFocusable(true);view.setClickable(true);TextView textView = (TextView) view.findViewById(R.id.tv_list_item);textView.setText(msg);textView.setTextSize(20);// 只有一项if (totle_Num == 1) {view.setBackgroundResource(R.drawable.default_selector);return view;}// 第一项else if (current_Id == 0) {view.setBackgroundResource(R.drawable.list_top_selector);}// 最后一项else if (current_Id == totle_Num - 1) {view.setBackgroundResource(R.drawable.list_bottom_selector);line.setVisibility(View.GONE);} elseview.setBackgroundResource(R.drawable.list_center_selector);linearLayout.addView(view);linearLayout.addView(line);return linearLayout;}
}

主要是getView有些复杂,不过都很好理解,相信大家都可以明白,只是没有动手做而已,小弟我只是想用这个练练手.

不过不要忘记我们的背景实现
这个是只有一项的背景,
default_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"><item android:state_pressed="true"><shape><stroke android:width="1dp" android:color="@color/gray" /><solid android:color="@color/gray" /><corners android:radius="8dp" /></shape></item><item><shape><stroke android:width="1dp" android:color="@color/gray" /><solid android:color="@color/white" /><corners android:radius="8dp" /></shape></item>
</selector>

list_top_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"><item android:state_pressed="true"><shape><stroke android:width="1dp" android:color="@color/gray" /><solid android:color="@color/gray" /><corners android:topLeftRadius="8dp" android:topRightRadius="8dp" /></shape></item><item><shape><solid android:color="@color/white" /><corners android:topLeftRadius="8dp" android:topRightRadius="8dp" /></shape></item>
</selector>

list_bottom_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"><item android:state_pressed="true"><shape><stroke android:width="1dp" android:color="@color/gray" /><solid android:color="@color/gray" /><corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" /></shape></item><item><shape><solid android:color="@color/white" /><corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" /></shape></item>
</selector>

list_center_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"><item android:state_pressed="true"><shape><stroke android:width="1dp" android:color="@color/gray" /><solid android:color="@color/gray" /></shape></item><item><shape><solid android:color="@color/white" /></shape></item>
</selector>

主要就这么多了,下面我们来看下实现效果:

  

原文地址:http://www.eoeandroid.com/thread-198770-1-1.html

转载于:https://www.cnblogs.com/spawnchen/archive/2012/09/11/2680404.html

Android ListView 圆角相关推荐

  1. Android实现ListView圆角效果

    本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...

  2. Android 实现ListView圆角效果

     今天,简单讲讲如何实现使用  ListView显示圆角. 其实代码很多都可以解决,这是在网上搜索的一个解决的代码. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看 ...

  3. android imageview 锯齿,[置顶] android 自定义圆角ImageView以及锯齿的处理

    看到很多人开发过程中要使用圆角图片时,解决方法有: 1.重新绘制一张图片 2.通过布局来配置 3.通过重写View来实现 其中1,2在这里就不讲了,重点讲讲方法三的实现. 实现一:通过截取画布一个圆形 ...

  4. android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  5. Android ListView 自定义背景后 滚动时的背景变黑问题

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉,原因是,滚动时,列表里面的view重绘时,用的依旧 ...

  6. Android listview viewholder

    2019独角兽企业重金招聘Python工程师标准>>> Android ListView ViewHolder 利用adapter中的getView的 contentView 的复用 ...

  7. Android ListView常用用法

    ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅. 程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按 ...

  8. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...

  9. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

最新文章

  1. 线性回归:不能忽视的三个问题
  2. OpenCV图像旋转的原理与技巧
  3. #Apache Spark系列技术直播# 第六讲【 What's New in Apache Spark 2.4? 】
  4. 小程序在输入npm命令_微信小程序使用npm包步骤
  5. 浏览器在DPI缩放时变化问题
  6. Hadoop下如何执行脚本
  7. R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
  8. Java面向对象封装和继承
  9. 重建大师5.0成为首款支持国产麒麟操作系统的自动实景三维建模软件
  10. Photoshop学习笔记
  11. 苹果应用商店AppStore审核规则指南
  12. 在浏览器中聊天(msn.jabber or gtalk,yahoo,aol,icq,meebo)
  13. MOSFET正温度系数和负温度系数
  14. 复现ReDet RTX 3090 pytorch1.8.1
  15. 如何写出高质量的文章:从战略到战术
  16. Python style百分制转五分制
  17. “景驰科技杯”2018年华南理工大学程序设计竞赛 C Youhane's Undergraduate Thesis (大模拟)
  18. Linux面试题汇总-2
  19. 热销产品缺货,滞销产品积压?WMS系统如何打造智能仓储
  20. TypeScript 初级教程-姜威-专题视频课程

热门文章

  1. python x 0b1011_PAT 1011 A+B和C (15)(C++JAVAPython)
  2. 50兆 svg 文件超过_中山兆驰产业园项目开工,预计竣工投产时间为…
  3. ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
  4. 016_SpringBoot整合MyBatis
  5. ps2020的antlib文件在哪_ant design pro 新增页面
  6. python算不算编程_Python 并不适合职场编程
  7. arrays中copyof复制两个数组_数组,及二维数组
  8. 计算机硬件大型作业报告,计算机硬件技术大作业报告.doc
  9. mac sublime html开发环境,在Mac下用Sublime Text 2 架设C开发环境
  10. 计算机网络期中考察方案,计算机网络期中考试题 b卷_ans.docx