当前位置: 编程技术>移动开发
本页文章导读:
▪统制不同文字字体Typeface 控制不同文字字体Typeface
控制不同文字字体Typeface:
1. 从外部字体文件构造
在assets下创建fonts文件夹,然后放入要使用的字体(.ttf), 然后
Typeface.createFromAsset(AssetManager mgr, String path);
Typeface..........
▪ Expandlistview的施用 Expandlistview的使用
前阵子写到一个Expandlistview的东西。用来做下载的,让我这菜鸟死了不少脑细胞。想想贴出来吧。方便自己,也方便大家。
首先是Activity里oncreate方法咯:
如下:
.........
▪ 如其你发现图片在真机中无法看见 如果你发现图片在真机中无法看见
看看代码中是否少了图片的后缀名,如果少了,模拟器是正常执行的,但是真机却有问题!!
......
[1]统制不同文字字体Typeface
来源: 互联网 发布时间: 2014-02-18
控制不同文字字体Typeface
控制不同文字字体Typeface:
1. 从外部字体文件构造
在assets下创建fonts文件夹,然后放入要使用的字体(.ttf), 然后
Typeface.createFromAsset(AssetManager mgr, String path);
Typeface.createFromAsset(ContextWrapper.getAssets(), "fonts/MONACO.ttf");
只支持.TTF格式字体, .FON,.TTC都不支持.
2. 使用android内置的Typeface
Typeface.defaultFromStyle(int style);
[2] Expandlistview的施用
来源: 互联网 发布时间: 2014-02-18
Expandlistview的使用
前阵子写到一个Expandlistview的东西。用来做下载的,让我这菜鸟死了不少脑细胞。想想贴出来吧。方便自己,也方便大家。
首先是Activity里oncreate方法咯:
如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = getLayoutInflater(); setContentView(R.layout.download); list = (ExpandableListView) findViewById(R.id.expand); //设置背景透明 list.setCacheColorHint(Color.TRANSPARENT); list.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { //写点击事件... return false; } }); mAdapter = new ExpandAdapter(inflater); list.setAdapter(mAdapter); }
下面是适配器的代码:
public class ExpandAdapter extends BaseExpandableListAdapter { private LayoutInflater expandview; /** * * 带参构造 * * @param inflater 可扩展视图 */ @SuppressWarnings("unchecked") public ExpandAdapter(LayoutInflater inflater) { //给groupVector添加String值,用作菜单显示 allTask.clear(); allTask.add("finish"); allTask.add("running"); //将inflater 参数赋给本地的inflater expandview = inflater; for (int i = 0; i < finishsize; i++) { DownLoadTaskInfo info = (DownLoadTaskInfo) finishVector .elementAt(i); finishTask.add(info); } for (int i = 0; i < downsize; i++) { DownLoadTaskInfo info = (DownLoadTaskInfo) downVector .elementAt(i); runningTask.add(info); } //这里边启动一个根据线程来给vector赋值的。 new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } for (int i = 0; i < runningTask.size(); i++) { //赋值的代码就不贴了.. } realTask.clear(); realTask.add(finishTask); realTask.add(runningTask); } } }).start(); } // } /** * * 获得子元素对象 [功能详细描述] * * @param groupPosition 父位置 * @param childPosition 子位置 * @return 子元素 * @see android.widget.ExpandableListAdapter#getChildId(int, int) */ @Override public Object getChild(int groupPosition, int childPosition) { return realTask.elementAt(groupPosition).elementAt(childPosition); } /** * * 获得子ID [功能详细描述] * * @param groupPosition 父位置 * @param childPosition 子位置 * @return 子位置参数 * @see android.widget.ExpandableListAdapter#getChildId(int, int) */ @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } /** * * 获取子view [功能详细描述] * * @param groupPosition 父view位置 * @param childPosition 子view 位置 * @param isLastChild 最后一个子view * @param convertView convertview * @param parent 父view * @return 子view */ @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { DownLoadTaskInfo childinfo = (DownLoadTaskInfo) (realTask .get(groupPosition).get(childPosition)); convertView = getChildsView(childinfo); return convertView; } /** * * 获得子view数目 * * @param groupPosition 父view位置 * @return 子view的数目 * @see android.widget.ExpandableListAdapter#getChildrenCount(int) */ @Override public int getChildrenCount(int groupPosition) { return realTask.elementAt(groupPosition).size(); } /** * * 获得父元素 [功能详细描述] * * @param groupPosition 父元素位置 * @return 父节点名称 * @see android.widget.ExpandableListAdapter#getGroup(int) */ @Override public Object getGroup(int groupPosition) { if ("finish".equals(allTask.elementAt(groupPosition))) { return getResources().getString(R.string.DownLoadFinish) + " (" + finishTask.size() + ")"; } else { return getResources().getString(R.string.DownLoading) + " (" + runningTask.size() + ")"; } } /** * * 获得父元素个数 [功能详细描述] * * @return 父元素个数 * @see android.widget.ExpandableListAdapter#getGroupCount() */ @Override public int getGroupCount() { return allTask.size(); } /** * * 父元素ID [功能详细描述] * * @param groupPosition 父元素位置 * @return 父元素ID * @see android.widget.ExpandableListAdapter#getGroupId(int) */ @Override public long getGroupId(int groupPosition) { return groupPosition; } /** * 获得Group的视图 * [功能详细描述] * * @param groupPosition 父元素位置 * @param isExpanded 是否可扩展 * @param convertView 覆盖视图 * @param parent 父节点 * @return 父元素视图 * @see android.widget.ExpandableListAdapter#getGroupView(int, boolean, * android.view.View, android.view.ViewGroup) */ @Override public TextView getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView txtView = getGenericView(); txtView.setText(getGroup(groupPosition).toString()); return txtView; } /** * * 是否Stable [功能详细描述] * * @return boolean值 * @see android.widget.ExpandableListAdapter#hasStableIds() */ @Override public boolean hasStableIds() { return true; } /** * * 是否child可选 [功能详细描述] * * @param groupPosition 父元素位置 * @param childPosition 子元素位置 * @return boolean * @see android.widget.ExpandableListAdapter#isChildSelectable(int, int) */ @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } /** * * 获得父元素视图格式 [功能详细描述] * * @return TextView */ public TextView getGenericView() { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 40); // TextView textView = new TextView(DownloadActivity.this); textView.setLayoutParams(lp); // // Center the text vertically textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); // // Set the text starting position textView.setPadding(36, 10, 0, 0); return textView; } /** * * 获得子元素视图 [功能详细描述] * * @param info 下载信息 * @return View */ public View getChildsView(DownLoadTaskInfo info) { String name = info.showName; int state = info.state; String percent = info.percent + "%"; View view = expandview.inflate(R.layout.expand_childitem, null); ImageView img = (ImageView) view.findViewById(R.id.downitem_image); TextView txtview = (TextView) view .findViewById(R.id.downitem_showname); TextView pctview = (TextView) view .findViewById(R.id.downitem_percent); //这些都是根据state来完成对应的item样式 if (state == 6) { img.setImageResource(R.drawable.download_finish); txtview.setText(name); } else if (state == 1) { img.setImageResource(R.drawable.download_start); txtview.setText(name); pctview.setText(percent); } else if (state == 2) { img.setImageResource(R.drawable.download_pause); txtview.setText(name); pctview.setText(percent); } else if (state == 3) { img.setImageResource(R.drawable.download_lost); txtview.setText(name); } return view; } }
下面的download.xml文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ExpandableListView android:id="@+id/expand" android:layout_below="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout>
这个是子item的样式文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="100px" android:layout_gravity="top|center"> <ImageView android:id="@+id/downitem_image" android:layout_alignParentTop="true" android:layout_marginLeft="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/downitem_showname" android:layout_alignParentTop="true" android:layout_marginLeft="100px" android:paddingTop="5px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/downitem_percent" android:layout_alignParentTop="true" android:layout_marginLeft="260px" android:paddingTop="5px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
1 楼
琼露露
2011-02-18
为什么例子和页面上的不是一个程序...
2 楼
mm4409092
2012-05-14
ExpandableListView实例(一)_数据库增删改查处理和listitem点击长按处理
http://blog.csdn.net/lk_blog/article/details/7562987
ExpandableListView实例(二)_两种方式实现QQ中组后面显示子条目数量效果
http://blog.csdn.net/lk_blog/article/details/7563355
ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能
http://blog.csdn.net/lk_blog/article/details/7563371
http://blog.csdn.net/lk_blog/article/details/7562987
ExpandableListView实例(二)_两种方式实现QQ中组后面显示子条目数量效果
http://blog.csdn.net/lk_blog/article/details/7563355
ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能
http://blog.csdn.net/lk_blog/article/details/7563371
[3] 如其你发现图片在真机中无法看见
来源: 互联网 发布时间: 2014-02-18
如果你发现图片在真机中无法看见
看看代码中是否少了图片的后缀名,如果少了,模拟器是正常执行的,但是真机却有问题!!
看看代码中是否少了图片的后缀名,如果少了,模拟器是正常执行的,但是真机却有问题!!
最新技术文章: