- 浏览: 635553 次
- 性别:
- 来自: 在野
文章分类
最新评论
-
tubinting:
学习了
[原创] 如何在android中实现swipe的手势功能及页面拖动动画 -
checkes:
我手上也有一块beagleboard 是omap37的这里看到 ...
Android成功刷到beagle board ^_^ -
thebye85:
成功了,谢谢分享
程序中如何开启关闭wifi服务 -
皇室勇少:
高人陋于市...
Google I/O 大会总结系列 - Dalvik开发者: Dan Bornstein -
wcily123:
lordhong 写道jjcang 写道大神一定没有用过e.p ...
[书评]深入潜出Google Android
这几天在搞带有icon的list item,但实现方法貌似很复杂,照着国外达人的一些code snippet也搞不定,他们也没把全部的code发出了,NND。。。怒!今天终于集众家之大成。。。搞定一个了。。。想想还是GWT好,一个composite widget就很轻松搞定了。。。Android目前还算是垃圾滴。。。
做个ImageItem class存放icon和text:
java 代码
- public class ImageItem {
- private String text;
- private Drawable drawable;
- private boolean isSelectable = true;
- public ImageItem(String text, Drawable drawable) {
- super();
- this.text = text;
- this.drawable = drawable;
- }
然后做个View给这个composite view,这里extend了linearlayout,但你也可以使用其他的layout:
java 代码
- public class ImageItemView extends LinearLayout {
- private TextView text;
- private ImageView image;
- public ImageItemView(Context context, String title, Drawable drawable) {
- super(context);
- this.setOrientation(HORIZONTAL);
- image = new ImageView(context);
- image.setImageDrawable(drawable);
- // 左,上,右,下
- image.setPadding(0, 2, 5, 2);
- //这里的layout一定要设置,不然无法显示,NND, 竟然default显示设置都没有!!
- addView(image, new LinearLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- text = new TextView(context);
- text.setText(title);
- addView(text, new LinearLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- }
接下来要做个Adapater给我们新建的composite view:
public class ImageItemArrayAdapter extends BaseAdapter {
private Context context;
private List<ImageItem> items;
public ImageItemArrayAdapter(Context ctx) {
context = ctx;
items = new ArrayList<ImageItem>();
}
里面要实现getView这个method,这里return上面新建的ImageItemView:
java 代码
- public View getView(int position, View convertView, ViewGroup parent) {
- ImageItemView iiv;
- if (convertView==null) {
- iiv = new ImageItemView(context, items.get(position).getText(), items.get(position).getDrawable());
- } else {
- iiv = (ImageItemView)convertView;
- iiv.setText(items.get(position).getText());
- iiv.setImage(items.get(position).getDrawable());
- }
- return iiv;
- }
最后用一个简单的ListActivity来demo下:
java 代码
- public class ImageListItemDemo extends ListActivity {
- List<ImageItemView> items;
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- ImageItemArrayAdapter adapter = new ImageItemArrayAdapter(this);
- Resources res = this.getResources();
- adapter.addItem(new ImageItem("Home", res.getDrawable(R.drawable.sliderhouse)));
- adapter.addItem(new ImageItem("Bar", res.getDrawable(R.drawable.bar)));
- adapter.addItem(new ImageItem("Book Store", res.getDrawable(R.drawable.bookstore)));
- adapter.addItem(new ImageItem("Cafe", res.getDrawable(R.drawable.cafe)));
- adapter.addItem(new ImageItem("Drug Store", res.getDrawable(R.drawable.drugstore)));
- adapter.addItem(new ImageItem("Fitness Center", res.getDrawable(R.drawable.fitness)));
- adapter.addItem(new ImageItem("Grocery", res.getDrawable(R.drawable.grocery)));
- adapter.addItem(new ImageItem("Library", res.getDrawable(R.drawable.library)));
- adapter.addItem(new ImageItem("Movie Theatre", res.getDrawable(R.drawable.movietheater)));
- adapter.addItem(new ImageItem("Park", res.getDrawable(R.drawable.park)));
- adapter.addItem(new ImageItem("Restaurant", res.getDrawable(R.drawable.restaurant)));
- adapter.addItem(new ImageItem("Super Market", res.getDrawable(R.drawable.retail)));
- adapter.addItem(new ImageItem("School", res.getDrawable(R.drawable.school)));
- setListAdapter(adapter);
- }
请看截图,效果不错吧!这个实现我觉得应该在google android API缺省要直接提供,毕竟用到的情况很多很多。
评论
16 楼
superwb
2008-04-18
山水之间 写道
我用mwjian,Quake Wang的方法实现时是按照以下代码实现的,但在执行时报错java.lang.ClassCastException.时说类型转换错误吧?但我不清楚是什么错误,麻烦各位达人帮忙看一下,多谢!!
共有两个.java文件,
一个是主文件HelloTwoB .java,代码如下:
package com.google.android.hellotwob;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
public class HelloTwoB extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
//SimpleAdapter demo
List listitems = fillMaps();
IconTextAdapter adapter=new IconTextAdapter( this,
listitems,
R.layout.list_row,
new String[]{"icon", "city"},
new int[]{R.id.icon, R.id.city},
new int[]{R.drawable.icon_smile, R.drawable.icon_smile},
R.id.icon );
setListAdapter(adapter);
}
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
}
另一个是文件IconTextAdapter.java,代码如下:
package com.google.android.hellotwob;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
public class IconTextAdapter extends SimpleAdapter {
private int[] mIcons;
private int mIconId;
/**
* @param icons Icon's id will display.
* @param iconId icon in layout's id
*/
public IconTextAdapter( Context context,
List data,
int resource,
String[] from,
int[] to,
int[] icons,
int iconId ) {
super(context, data, resource, from, to);
mIcons = icons;
mIconId = iconId;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.findViewById(mIconId);
img.setImageResource(mIcons[position]);
return v;
}
}
xml文件有两个:
一个是main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
另一个是:list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
另外还有一个icon,icon_smail.jpg文件
icon_smile.jpg
还有一个问题,List,Map可以如下这样使用吗?
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
多谢各位了!!!
共有两个.java文件,
一个是主文件HelloTwoB .java,代码如下:
package com.google.android.hellotwob;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
public class HelloTwoB extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
//SimpleAdapter demo
List listitems = fillMaps();
IconTextAdapter adapter=new IconTextAdapter( this,
listitems,
R.layout.list_row,
new String[]{"icon", "city"},
new int[]{R.id.icon, R.id.city},
new int[]{R.drawable.icon_smile, R.drawable.icon_smile},
R.id.icon );
setListAdapter(adapter);
}
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
}
另一个是文件IconTextAdapter.java,代码如下:
package com.google.android.hellotwob;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
public class IconTextAdapter extends SimpleAdapter {
private int[] mIcons;
private int mIconId;
/**
* @param icons Icon's id will display.
* @param iconId icon in layout's id
*/
public IconTextAdapter( Context context,
List data,
int resource,
String[] from,
int[] to,
int[] icons,
int iconId ) {
super(context, data, resource, from, to);
mIcons = icons;
mIconId = iconId;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.findViewById(mIconId);
img.setImageResource(mIcons[position]);
return v;
}
}
xml文件有两个:
一个是main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
另一个是:list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
另外还有一个icon,icon_smail.jpg文件
icon_smile.jpg
还有一个问题,List,Map可以如下这样使用吗?
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
多谢各位了!!!
HashMap j2me好像不支持吧!
15 楼
山水之间
2008-01-23
我用mwjian,Quake Wang的方法实现时是按照以下代码实现的,但在执行时报错java.lang.ClassCastException.时说类型转换错误吧?但我不清楚是什么错误,麻烦各位达人帮忙看一下,多谢!!
共有两个.java文件,
一个是主文件HelloTwoB .java,代码如下:
package com.google.android.hellotwob;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
public class HelloTwoB extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
//SimpleAdapter demo
List listitems = fillMaps();
IconTextAdapter adapter=new IconTextAdapter( this,
listitems,
R.layout.list_row,
new String[]{"icon", "city"},
new int[]{R.id.icon, R.id.city},
new int[]{R.drawable.icon_smile, R.drawable.icon_smile},
R.id.icon );
setListAdapter(adapter);
}
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
}
另一个是文件IconTextAdapter.java,代码如下:
package com.google.android.hellotwob;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
public class IconTextAdapter extends SimpleAdapter {
private int[] mIcons;
private int mIconId;
/**
* @param icons Icon's id will display.
* @param iconId icon in layout's id
*/
public IconTextAdapter( Context context,
List data,
int resource,
String[] from,
int[] to,
int[] icons,
int iconId ) {
super(context, data, resource, from, to);
mIcons = icons;
mIconId = iconId;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.findViewById(mIconId);
img.setImageResource(mIcons[position]);
return v;
}
}
xml文件有两个:
一个是main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
另一个是:list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
另外还有一个icon,icon_smail.jpg文件
icon_smile.jpg
还有一个问题,List,Map可以如下这样使用吗?
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
多谢各位了!!!
共有两个.java文件,
一个是主文件HelloTwoB .java,代码如下:
package com.google.android.hellotwob;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
public class HelloTwoB extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
//SimpleAdapter demo
List listitems = fillMaps();
IconTextAdapter adapter=new IconTextAdapter( this,
listitems,
R.layout.list_row,
new String[]{"icon", "city"},
new int[]{R.id.icon, R.id.city},
new int[]{R.drawable.icon_smile, R.drawable.icon_smile},
R.id.icon );
setListAdapter(adapter);
}
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
}
另一个是文件IconTextAdapter.java,代码如下:
package com.google.android.hellotwob;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
public class IconTextAdapter extends SimpleAdapter {
private int[] mIcons;
private int mIconId;
/**
* @param icons Icon's id will display.
* @param iconId icon in layout's id
*/
public IconTextAdapter( Context context,
List data,
int resource,
String[] from,
int[] to,
int[] icons,
int iconId ) {
super(context, data, resource, from, to);
mIcons = icons;
mIconId = iconId;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.findViewById(mIconId);
img.setImageResource(mIcons[position]);
return v;
}
}
xml文件有两个:
一个是main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
另一个是:list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
另外还有一个icon,icon_smail.jpg文件
icon_smile.jpg
还有一个问题,List,Map可以如下这样使用吗?
private List fillMaps(){
List items = new ArrayList();
Map i1 = new HashMap();
i1.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i1.put("city", "Beijing");
items.add(i1);
Map i2 = new HashMap();
i2.put("icon", getResources().getDrawable(R.drawable.icon_smile));
i2.put("city", "Tokyo");
items.add(i2);
return items;
}
多谢各位了!!!
14 楼
zhengweiyang1015
2008-01-17
本人对您的方法非常感兴趣,能否把源代码提供一下,不胜感激,
我的邮箱是zhengweiyang2006@126.com
我的邮箱是zhengweiyang2006@126.com
13 楼
zhengweiyang1015
2008-01-17
本人对您的方法非常感兴趣,能否把源代码提供一下,不胜感激
12 楼
zhengweiyang
2008-01-09
[color=darkred][/
dfsgsdfgfsdg
引用
dfsgsdfgfsdg
11 楼
zhengweiyang1015
2008-01-04
能否把源代码提供一下,不胜感激!
zhengweiyang2008@126.com
zhengweiyang2008@126.com
10 楼
lordhong
2008-01-02
楼上MM站内短信已经回复。
9 楼
newanan
2007-12-19
lz,xm初学andoid,用您提供的代码自己建了个工程运行了一把,没有出结果,本人对您的方法非常感兴趣,能否把源代码提供一下,不胜感激!
8 楼
bobomtv17
2007-12-13
楼主是J2ME高手啊
7 楼
lordhong
2007-12-09
珍爱生命,远离J2ME。。。
6 楼
muscle-liu
2007-12-08
j2mepolish 里边定义着一个IconItem(extends Item), 很容易实现楼主要噶效果...
5 楼
mwjian
2007-11-30
根据Quake Wang的提示,实现如下,相当简单
public class IconTextAdapter extends SimpleAdapter { private int[] mIcons; private int mIconId; /** * @param icons 要显示的Icon资源id * @param iconId icon在layout中的id */ public IconTextAdapter(Context context, List data, int resource, String[] from, int[] to, int[] icons, int iconId) { super(context, data, resource, from, to); mIcons = icons; mIconId = iconId; } public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); ImageView img = (ImageView) v.findViewById(mIconId); img.setImageResource(mIcons[position]); return v; } }
4 楼
小小龙猫
2007-11-23
hehe,好好学习一下
3 楼
lordhong
2007-11-22
大哥,你强大啊!如果能把MapView搞进compsite view里面就NB了!
快点啊,拉票人一起参赛啊!
快点啊,拉票人一起参赛啊!
2 楼
QuakeWang
2007-11-22
这样实现ListVie的Row有点太麻烦了,我想可以用xml composite layout以及google提供的一些内建Class来做,做了一个小实验:
定义layout, row.xml
这里是用2个TextView来做横向排列的组合
在Activity里面就可以这样写了:
这里用了SDK提供的SimpleAdapter,来把一个Map通过key值绑定到了layout id上,这样出来了附件的显示效果,距离我们想要的最终效果就是文字和图标的区别。
下一步就是把row.xml中的其中一个TextView替换成ImageView:
由于SimpleAdapter只能绑定到TextView,我们还需要自己写一个IconTextAdapter extends SimpleAdapter,重写里面的绑定数据到ImageView的方法,就能够实现想要的效果了。
可惜SDK里面的android.jar还没有放出源代码来,也没有相关的例子,光看api文档摸索需要一些时间,我就偷懒了, 这个实验就做到此,
定义layout, row.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView id="@+id/text1" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView id="@+id/text2" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="2"/> </LinearLayout>
这里是用2个TextView来做横向排列的组合
在Activity里面就可以这样写了:
public void onCreate(Bundle icicle) { super.onCreate(icicle); List items = new ArrayList(); Map i1 = new HashMap(); i1.put("text", "text1"); i1.put("icon", "icon1"); items.add(i1); Map i2 = new HashMap(); i2.put("text", "text2"); i2.put("icon", "icon2"); items.add(i2); ListAdapter adapter = new SimpleAdapter(this, items, R.layout.row, new String[] { "icon", "text" }, new int[] { R.id.text1, R.id.text2 }); setListAdapter(adapter); }
这里用了SDK提供的SimpleAdapter,来把一个Map通过key值绑定到了layout id上,这样出来了附件的显示效果,距离我们想要的最终效果就是文字和图标的区别。
下一步就是把row.xml中的其中一个TextView替换成ImageView:
<ImageView id="@+id/icon1" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1"/>
由于SimpleAdapter只能绑定到TextView,我们还需要自己写一个IconTextAdapter extends SimpleAdapter,重写里面的绑定数据到ImageView的方法,就能够实现想要的效果了。
可惜SDK里面的android.jar还没有放出源代码来,也没有相关的例子,光看api文档摸索需要一些时间,我就偷懒了, 这个实验就做到此,
1 楼
yongyuan.jiang
2007-11-22
android不是号称采取gwt前端开发模式吗?
相关推荐
本教程将详细介绍如何在Android中实现一个带图标的ListView。 ### 1. ListView的基本概念 ListView是Android中的一个视图容器,它可以显示一列可滚动的项目列表。每个列表项(ListView项)通常由一个布局文件定义,...
总的来说,为Android桌面图标添加背景框涉及到XML资源文件的编辑,主要是通过`<shape>`和`<layer-list>`元素来实现。如果需要全局生效,可能还需要考虑自定义启动器的实现。对于开发人员来说,理解Android的资源系统...
通过以上步骤,你就可以在Android应用中实现带有图标的ListView了。这种实现方式允许你灵活地定制列表项的外观,并且可以通过适配器轻松地绑定任意类型的数据源。在实际项目中,可以根据需求进一步扩展,比如添加...
这个场景中,我们讨论的是如何手工绘制一个带有三层渐变色的圆形图标。这个过程涉及到对Android图形绘制的理解,特别是使用`LayerDrawable`和颜色渐变的概念。 首先,我们要明白`LayerDrawable`是Android中的一个...
Android图标通常由XML定义,存储在项目的`res/mipmap`目录下。它们可以是静态图像,也可以是包含不同状态(如未读消息数量)的动态图层列表。 2. **使用图层列表(Layer-List)** Android提供了`Layer-List`资源...
在Android开发中,Drawable是用于绘制图形对象的重要类,它能帮助我们实现各种自定义的UI元素,包括图标。本教程将深入讲解如何利用Drawable来创建一个自定义的电池图标,以此来展示Drawable的灵活性和实用性。 ...
为了帮助开发者更好地理解Android中的各种XML属性及其用途,本文将详细介绍部分核心XML元素及其属性,包括但不限于`<animated-rotate>`、`<animation-list>`、`<bitmap>`等。 #### `<animated-rotate>`: 动态旋转...
这里,`android:elevation`设置阴影高度,`android:background`定义背景色,`itemBackground`、`itemIconTint`和`itemTextColor`用于设置选中和未选中状态的图标和文字颜色。 创建`res/drawable/bottom_nav_item_...
在Android开发中,UI设计和交互的灵活性是其一大特点,而`LevelList`就是其中一种用于创建基于状态图标的资源类型。它允许开发者根据不同的条件(如电量水平)显示不同的图标,就像我们常见的电池图标在电量变化时的...
然而,当需要更复杂的定制时,如不同列表项使用不同的布局或设置特定的图标,我们就需要创建自定义Adapter的子类并重写`getView()`方法。以下是一个示例,根据字符串长度动态设置图标: ```java public class ...
实现带图标的ListView不仅可以提升应用的用户体验,还可以使信息更直观、更具吸引力。本文将深入探讨如何在Android中实现这样的功能。 首先,我们需要理解ListView的基本工作原理。ListView通过Adapter与数据源进行...
在Android开发中,State List Drawable(状态列表绘制对象)是一种非常重要的资源类型,它允许我们根据组件的状态(如被按下、被聚焦、被选中等)来改变其显示的图像。这个实例“Android State List Drawable状态...
private List<TagItem> tagItems = new ArrayList(); public TagView(Context context) { super(context); init(); } public TagView(Context context, AttributeSet attrs) { super(context, attrs); ...
在Android开发中,RatingBar是一个非常实用的组件,它用于让用户对某项内容进行评分,通常表现为星形图标。本教程将深入探讨RatingBar的使用方法,包括基本配置、属性设置、事件监听以及自定义样式。 一、RatingBar...
通过设置`android:button="@null"`禁用默认的RadioButton图标,并用`android:background`属性指定我们刚刚创建的自定义样式。 此外,我们还可以通过设置文字颜色、字体大小等属性来进一步定制样式: ```xml ... ...
在Android开发中,Drawable是用于绘制图形对象的重要类,它能帮助我们实现各种自定义的UI元素,包括图标。本教程将深入探讨如何利用Drawable来创建一个自定义的电池图标,以此来提升应用的用户体验。 首先,理解...
默认的RatingBar使用系统提供的星星图标,我们可以通过设置`android:indeterminateDrawable`和`android:progressDrawable`属性来替换为自定义的图片资源。 ```xml ... android:indeterminateDrawable="@drawable...
`Animation-list`是Android系统提供的一种用于实现逐帧动画的工具,特别适用于制作简单的2D游戏或动态图标等效果。本篇文章将详细探讨如何利用`Animation-list`来创建逐帧动画。 首先,`Animation-list`是XML布局...
`Animation-list`是Android系统提供的一种用于创建帧动画的视图,常用于实现等待加载、旋转图标等动态效果。本教程将详细讲解如何使用`Animation-list`来创建一个简单的等待加载动画。 首先,我们需要了解`...
<item android:state_pressed="true" android:drawable="@drawable/star_half"/> <item android:state_focused="true" android:drawable="@drawable/star_half"/> <item android:drawable="@drawable/star_empty...