- 浏览: 238956 次
- 性别:
- 来自: 广州
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
在android上开发项目,如果仅仅是采用默认的样式可能不是很美观,需要编写响应的样式来使界面美观,在iphone上常用的圆角ListView的实现。
本人实现的原理如下:
通过重写ListView中拦截触摸的事件方式,在生成ListView时候根据不同行采用不同的样式。如第一个行,最末一行,和中建行。(特殊的情况下只有一行的时候,四个角均为圆角考虑)。
实现如下:
最后一行为时候,下方两个角为圆角样式如下:
app_list_corner_round_bottom.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip" />
</shape>
第一行为圆角且仅仅为一条记录使用样式:
app_list_corner_round.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"/>
</shape>
第一行为圆角且有多条记录使用样式:
app_list_corner_round_top.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
多行记录非第一行和最末一行使用的样式:
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
</shape>
重写的ListView
Java代码
package com.easyway.listview.corner;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.ListView;
/**
* 圆角ListView
* 重写ListView的样式实现相关的样式
* app_list_corner_round_top.xml
* <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
*
* android:shape 配置的是图形的形式,主要包括方形、圆形等,上边代码为方形。
* gradient节点主要配置起点颜色、终点颜色、中间点的坐标、中间点的颜色、渐变角度(90度为上下渐变,0为左右渐变),
* padding节点主要配置上下左右边距,
* corners节点配置四周园角的半径。
*
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class CornerListView extends ListView {
public CornerListView(Context context) {
super(context);
}
public CornerListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CornerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 重写此方式实现不同行的样式不一样
*
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
//
case MotionEvent.ACTION_DOWN:
int x = (int) ev.getX();
int y = (int) ev.getY();
//返回记录数据行数
int itemnum = pointToPosition(x, y);
if (itemnum == AdapterView.INVALID_POSITION)
break;
else{
if(itemnum==0){
if(itemnum==(getAdapter().getCount()-1)){
setSelector(R.drawable.app_list_corner_round); //仅仅一行记录的样式
}else{
setSelector(R.drawable.app_list_corner_round_top); //多行且第一行的样式
}
}else if(itemnum==(getAdapter().getCount()-1)) //最后一行的样式
setSelector(R.drawable.app_list_corner_round_bottom);
else{
setSelector(R.drawable.app_list_corner_shape);
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onInterceptTouchEvent(ev);
}
}
package com.easyway.listview.corner;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.ListView;
/**
* 圆角ListView
* 重写ListView的样式实现相关的样式
* app_list_corner_round_top.xml
* <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
*
* android:shape 配置的是图形的形式,主要包括方形、圆形等,上边代码为方形。
* gradient节点主要配置起点颜色、终点颜色、中间点的坐标、中间点的颜色、渐变角度(90度为上下渐变,0为左右渐变),
* padding节点主要配置上下左右边距,
* corners节点配置四周园角的半径。
*
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class CornerListView extends ListView {
public CornerListView(Context context) {
super(context);
}
public CornerListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CornerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 重写此方式实现不同行的样式不一样
*
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
//
case MotionEvent.ACTION_DOWN:
int x = (int) ev.getX();
int y = (int) ev.getY();
//返回记录数据行数
int itemnum = pointToPosition(x, y);
if (itemnum == AdapterView.INVALID_POSITION)
break;
else{
if(itemnum==0){
if(itemnum==(getAdapter().getCount()-1)){
setSelector(R.drawable.app_list_corner_round); //仅仅一行记录的样式
}else{
setSelector(R.drawable.app_list_corner_round_top); //多行且第一行的样式
}
}else if(itemnum==(getAdapter().getCount()-1)) //最后一行的样式
setSelector(R.drawable.app_list_corner_round_bottom);
else{
setSelector(R.drawable.app_list_corner_shape);
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onInterceptTouchEvent(ev);
}
}
主要布局类main.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:id="@+id/listview_layout"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingLeft="25dp"
android:paddingTop="15dp" >
<TextView
android:id="@+id/menu_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting"
android:textColor="@color/gray" />
</LinearLayout>
<com.easyway.listview.corner.CornerListView
android:id="@+id/list1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/shape_bg_listview"
android:cacheColorHint="@null"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:id="@+id/listview_layout"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingLeft="25dp"
android:paddingTop="15dp" >
<TextView
android:id="@+id/menu_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting"
android:textColor="@color/gray" />
</LinearLayout>
<com.easyway.listview.corner.CornerListView
android:id="@+id/list1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/shape_bg_listview"
android:cacheColorHint="@null"/>
</LinearLayout> 每行的布局:
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" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="5dip"
android:paddingTop="10dip" >
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textColor="@color/gray"
android:textSize="15sp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="16dp"
android:src="@drawable/right" />
</RelativeLayout>
</LinearLayout>
<?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" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="5dip"
android:paddingTop="10dip" >
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textColor="@color/gray"
android:textSize="15sp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="16dp"
android:src="@drawable/right" />
</RelativeLayout>
</LinearLayout>
主要类:
Java代码
package com.easyway.listview.corner;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
/**
* Android实现圆角ListView示例
* 实现圆角ListView原理主要采用添加相关的样式布局。
* 通过重写ListView中特定的方法
* 拦截触摸事件的方法。
* public boolean onInterceptTouchEvent(MotionEvent ev)
* 根据横轴坐标计算行数,并实现
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class RoundCornerActivity extends Activity {
private CornerListView cornerListView = null;
private ArrayList<HashMap<String, String>> maplist = null;
private LinearLayout linearLayout;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.main);
//获取布局对象
linearLayout=(LinearLayout)findViewById(R.id.listview_layout);
//设置壁纸为背景图片
linearLayout.setBackgroundDrawable(getWallpaper());
//获取初始化数据
maplist=getData();
//创建一个适配器对象
SimpleAdapter adapter1 = new SimpleAdapter(this, maplist,
R.layout.simple_list_item_1, new String[] { "item" },
new int[] { R.id.item_title });
//创建ListView对象
cornerListView = (CornerListView) findViewById(R.id.list1);
//设置适配器
cornerListView.setAdapter(adapter1);
initListener();
}
private void initListener() {
//添加响应时间
cornerListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (arg2 == 0) {
System.out.println("0");
}else{
System.out.println("1");
}
}
});
}
/**
* 模拟数据
* @return
*/
public ArrayList<HashMap<String, String>> getData() {
maplist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
HashMap<String, String> map4 = new HashMap<String, String>();
map1.put("item", "公交");
map2.put("item", "火车");
map3.put("item", "地铁");
map4.put("item", "航空");
maplist.add(map1);
maplist.add(map2);
maplist.add(map3);
maplist.add(map4);
return maplist;
}
}
本人实现的原理如下:
通过重写ListView中拦截触摸的事件方式,在生成ListView时候根据不同行采用不同的样式。如第一个行,最末一行,和中建行。(特殊的情况下只有一行的时候,四个角均为圆角考虑)。
实现如下:
最后一行为时候,下方两个角为圆角样式如下:
app_list_corner_round_bottom.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip" />
</shape>
第一行为圆角且仅仅为一条记录使用样式:
app_list_corner_round.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"/>
</shape>
第一行为圆角且有多条记录使用样式:
app_list_corner_round_top.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
多行记录非第一行和最末一行使用的样式:
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
</shape>
重写的ListView
Java代码
package com.easyway.listview.corner;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.ListView;
/**
* 圆角ListView
* 重写ListView的样式实现相关的样式
* app_list_corner_round_top.xml
* <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
*
* android:shape 配置的是图形的形式,主要包括方形、圆形等,上边代码为方形。
* gradient节点主要配置起点颜色、终点颜色、中间点的坐标、中间点的颜色、渐变角度(90度为上下渐变,0为左右渐变),
* padding节点主要配置上下左右边距,
* corners节点配置四周园角的半径。
*
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class CornerListView extends ListView {
public CornerListView(Context context) {
super(context);
}
public CornerListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CornerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 重写此方式实现不同行的样式不一样
*
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
//
case MotionEvent.ACTION_DOWN:
int x = (int) ev.getX();
int y = (int) ev.getY();
//返回记录数据行数
int itemnum = pointToPosition(x, y);
if (itemnum == AdapterView.INVALID_POSITION)
break;
else{
if(itemnum==0){
if(itemnum==(getAdapter().getCount()-1)){
setSelector(R.drawable.app_list_corner_round); //仅仅一行记录的样式
}else{
setSelector(R.drawable.app_list_corner_round_top); //多行且第一行的样式
}
}else if(itemnum==(getAdapter().getCount()-1)) //最后一行的样式
setSelector(R.drawable.app_list_corner_round_bottom);
else{
setSelector(R.drawable.app_list_corner_shape);
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onInterceptTouchEvent(ev);
}
}
package com.easyway.listview.corner;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.ListView;
/**
* 圆角ListView
* 重写ListView的样式实现相关的样式
* app_list_corner_round_top.xml
* <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BFEEFF"
android:endColor="#40B9FF"
android:angle="270"/>
<corners android:topLeftRadius="6dip"
android:topRightRadius="6dip"/>
</shape>
*
* android:shape 配置的是图形的形式,主要包括方形、圆形等,上边代码为方形。
* gradient节点主要配置起点颜色、终点颜色、中间点的坐标、中间点的颜色、渐变角度(90度为上下渐变,0为左右渐变),
* padding节点主要配置上下左右边距,
* corners节点配置四周园角的半径。
*
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class CornerListView extends ListView {
public CornerListView(Context context) {
super(context);
}
public CornerListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CornerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 重写此方式实现不同行的样式不一样
*
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
//
case MotionEvent.ACTION_DOWN:
int x = (int) ev.getX();
int y = (int) ev.getY();
//返回记录数据行数
int itemnum = pointToPosition(x, y);
if (itemnum == AdapterView.INVALID_POSITION)
break;
else{
if(itemnum==0){
if(itemnum==(getAdapter().getCount()-1)){
setSelector(R.drawable.app_list_corner_round); //仅仅一行记录的样式
}else{
setSelector(R.drawable.app_list_corner_round_top); //多行且第一行的样式
}
}else if(itemnum==(getAdapter().getCount()-1)) //最后一行的样式
setSelector(R.drawable.app_list_corner_round_bottom);
else{
setSelector(R.drawable.app_list_corner_shape);
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onInterceptTouchEvent(ev);
}
}
主要布局类main.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:id="@+id/listview_layout"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingLeft="25dp"
android:paddingTop="15dp" >
<TextView
android:id="@+id/menu_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting"
android:textColor="@color/gray" />
</LinearLayout>
<com.easyway.listview.corner.CornerListView
android:id="@+id/list1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/shape_bg_listview"
android:cacheColorHint="@null"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:id="@+id/listview_layout"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingLeft="25dp"
android:paddingTop="15dp" >
<TextView
android:id="@+id/menu_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting"
android:textColor="@color/gray" />
</LinearLayout>
<com.easyway.listview.corner.CornerListView
android:id="@+id/list1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/shape_bg_listview"
android:cacheColorHint="@null"/>
</LinearLayout> 每行的布局:
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" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="5dip"
android:paddingTop="10dip" >
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textColor="@color/gray"
android:textSize="15sp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="16dp"
android:src="@drawable/right" />
</RelativeLayout>
</LinearLayout>
<?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" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="5dip"
android:paddingTop="10dip" >
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textColor="@color/gray"
android:textSize="15sp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="16dp"
android:src="@drawable/right" />
</RelativeLayout>
</LinearLayout>
主要类:
Java代码
package com.easyway.listview.corner;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
/**
* Android实现圆角ListView示例
* 实现圆角ListView原理主要采用添加相关的样式布局。
* 通过重写ListView中特定的方法
* 拦截触摸事件的方法。
* public boolean onInterceptTouchEvent(MotionEvent ev)
* 根据横轴坐标计算行数,并实现
*
* @Title:
* @Description: 实现TODO
* @Copyright:Copyright (c) 2011
* @Company:易程科技股份有限公司
* @Date:2012-7-16
* @author longgangbai
* @version 1.0
*/
public class RoundCornerActivity extends Activity {
private CornerListView cornerListView = null;
private ArrayList<HashMap<String, String>> maplist = null;
private LinearLayout linearLayout;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.main);
//获取布局对象
linearLayout=(LinearLayout)findViewById(R.id.listview_layout);
//设置壁纸为背景图片
linearLayout.setBackgroundDrawable(getWallpaper());
//获取初始化数据
maplist=getData();
//创建一个适配器对象
SimpleAdapter adapter1 = new SimpleAdapter(this, maplist,
R.layout.simple_list_item_1, new String[] { "item" },
new int[] { R.id.item_title });
//创建ListView对象
cornerListView = (CornerListView) findViewById(R.id.list1);
//设置适配器
cornerListView.setAdapter(adapter1);
initListener();
}
private void initListener() {
//添加响应时间
cornerListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (arg2 == 0) {
System.out.println("0");
}else{
System.out.println("1");
}
}
});
}
/**
* 模拟数据
* @return
*/
public ArrayList<HashMap<String, String>> getData() {
maplist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
HashMap<String, String> map4 = new HashMap<String, String>();
map1.put("item", "公交");
map2.put("item", "火车");
map3.put("item", "地铁");
map4.put("item", "航空");
maplist.add(map1);
maplist.add(map2);
maplist.add(map3);
maplist.add(map4);
return maplist;
}
}
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1097本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 955在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 947http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 889android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1140http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 952http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1178http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 931Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2665import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2812Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1348我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1380MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1840一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1093创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1820Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1283Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1198http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1032android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2103最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ... -
Android EditText 为空提示 密码隐藏
2012-07-17 23:39 1153EditText为空时提示方法: 1.xml文件中设置,如: ...
相关推荐
以下将详细讲解如何在Android中为ListView实现圆角。 首先,我们需要创建一个自定义的ListView,这通常涉及到继承AbsListView或ListView类。在这个自定义ListView中,我们将重写onDraw方法,以在绘制每个子视图(即...
本文将深入探讨如何在Android中实现ListView的边框圆角美化,以此来达到类似iPhone界面的视觉效果。 首先,我们需要理解ListView的基本结构。ListView是由多个View(通常是ListView项布局,即Item Layout)组成的,...
要实现一个具有圆角效果的ListView,我们需要结合自定义View、Drawable以及Adapter等技术来完成。本实例将详细介绍如何在Android中创建一个圆角ListView。 首先,我们要明白圆角效果通常是由背景Drawable实现的。在...
本篇文章将详细探讨如何实现一个模仿iPhone中UITableView风格的Android ListView,特别是如何赋予ListView圆角效果。 首先,我们需要了解ListView的基本结构。ListView是Android中的一个视图容器,用于显示一列可...
首先,实现ListView圆角效果主要依赖于Android的Drawable资源,特别是Shape Drawable。Shape Drawable允许我们定义不同形状(如矩形、圆形等)并自定义其颜色、渐变、边框等属性。在这个案例中,我们将通过定义不同...
在Android开发中,为了使应用界面更接近iOS的风格或者增加独特的用户体验,有时我们需要实现类似iPhone的圆角ListView以及点击效果。本篇文章将详细讲解如何在Android中复现这一功能。 首先,我们要创建一个带有...
在Android中,实现ListView圆角通常涉及以下几个关键知识点: 1. **自定义ListView项布局**:首先,我们需要为ListView创建一个自定义的布局文件。在这个布局中,我们可以设置背景为一个带有圆角的Drawable资源。...
总的来说,实现ListView圆角分块显示涉及到UI设计、自定义布局、数据适配等多个方面,需要开发者具备良好的Android基础知识和实践经验。在实际项目中,可以根据需求和性能要求选择合适的方法来实现这一功能。
- 压缩包中的`AndroidListview`可能包含了一个示例项目,演示了如何实现带圆角的ListView以及相关的性能优化。通过查看源码,我们可以学习到实际应用中的最佳实践。 综上所述,要实现“Android ListView 圆角”这...
要实现ListView的圆角效果,我们需要理解Android的布局系统、自定义ViewGroup以及如何为ListView的每个条目设置背景。以下是实现这一目标的具体步骤和相关知识点。 1. **自定义Adapter** - Android中的ListView...
以上就是实现ListView圆角的基本步骤。当然,实际应用中可能还需要考虑更多细节,如阴影效果、不同状态下的背景色等,可以根据需求进行扩展。同时,如果你希望在ListView滑动时保持头部和底部的圆角,可能需要使用到...
而“listview圆角列表demo”则是针对ListView进行的一种定制化设计,使得ListView的每一项(item)显示为具有圆角的矩形,以提升界面的美观度和用户体验。下面将详细解释如何实现ListView的圆角效果。 1. **圆角...
为了实现圆角效果,我们需要对ListView的每一项视图进行定制。一种常见的方式是在XML布局文件中,为列表项的背景设置一个带有圆角的九宫格图片(.9.png),这种图片可以拉伸而保持圆角不变形。此外,还可以使用Shape...
5. **圆角动态变化**:如果需要在ListView中实现动态圆角,例如根据数据项的状态改变圆角大小,可以考虑在`getView()`方法中根据数据项的状态动态修改背景的`android:radius`属性,或者使用自定义的Drawable类,通过...
本文将深入探讨如何实现自定义的圆角ListView项以及处理选中背景。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来填充数据,并通过ViewHolder优化性能。Adapter负责将数据转化为View,然后ListView...
本篇文章将深入探讨如何实现一个具有圆角效果的ListView,同时介绍如何动态添加和删除ListView的item,并实现点击背景变化的功能。 首先,我们要创建一个圆角ListView。这通常涉及到自定义ListView的Adapter和item...
总的来说,实现“Android圆角listview”和“回弹效果”需要结合布局设计、自定义视图绘制、滚动监听和动画处理等技术。开发者可以根据项目的具体需求,选择合适的方法来实现这些功能,提升用户体验。
在Android开发中,ListView是...这个压缩包文件"ListView的圆角实现"可能包含了实现上述步骤的代码示例,供开发者参考和学习。通过理解这些知识点,你可以根据自己的项目需求,灵活地实现不同风格的圆角ListView效果。