Android用PopupWindow实现新浪微博的分组信息实例
程序员文章站
2024-03-01 22:00:10
最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用popupwindow实现的,今天自己也写了一个例子实现了这种效果,希望对大家有帮助。
pop...
最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用popupwindow实现的,今天自己也写了一个例子实现了这种效果,希望对大家有帮助。
popupwindow就是弹出窗口的意思,类似windows下面的开始按钮。popupwindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画.
效果如下:
实现思路:
在一个popupwindow里放一个listview,从而来达到分组信息的实现!
具体主要实现代码:
group_list.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="0.0px" android:background="@drawable/group_bg" android:orientation="vertical" android:paddingleft="0.0sp" android:paddingright="0.0sp" > <textview android:id="@+id/groupall" style="@style/grouplist_item_textview" android:layout_width="fill_parent" android:layout_height="@dimen/group_item_height" android:background="@drawable/grouplist_fixed_item_bg" android:gravity="center" android:text="全部" /> <imageview android:id="@+id/iv_group_list_bg_divider" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="0.0px" android:background="@drawable/group_divider" android:padding="0.0px" /> <listview android:id="@+id/lvgroup" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.0" android:cachecolorhint="#00000000" android:divider="@drawable/group_divider" android:dividerheight="2.0px" android:drawselectorontop="true" android:fadingedgelength="0.0sp" android:listselector="@drawable/grouplist_item_bg" /> </linearlayout>
group_item_view.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="@dimen/group_item_height" android:orientation="vertical" > <textview android:id="@+id/groupitem" style="@style/grouplist_item_textview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" /> </linearlayout>
activity中的代码:
package com.jiahui.popwindow; import java.util.arraylist; import java.util.list; import com.jiahui.adapter.groupadapter; import android.app.activity; import android.content.context; import android.graphics.drawable.bitmapdrawable; import android.os.bundle; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.windowmanager; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.button; import android.widget.listview; import android.widget.popupwindow; import android.widget.textview; import android.widget.toast; public class poupwindowdemoactivity extends activity { private popupwindow popupwindow; private listview lv_group; private view view; private view top_title; private textview tvtitle; private list<string> groups; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); top_title = this.findviewbyid(r.id.top_title); tvtitle = (textview) top_title.findviewbyid(r.id.tvtitle); tvtitle.settext("做一个低调的码农"); tvtitle.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { showwindow(v); } }); } /** * 显示 * * @param parent */ private void showwindow(view parent) { if (popupwindow == null) { layoutinflater layoutinflater = (layoutinflater) getsystemservice(context.layout_inflater_service); view = layoutinflater.inflate(r.layout.group_list, null); lv_group = (listview) view.findviewbyid(r.id.lvgroup); // 加载数据 groups = new arraylist<string>(); groups.add("我的微博"); groups.add("好友"); groups.add("亲人"); groups.add("陌生人"); groupadapter groupadapter = new groupadapter(this, groups); lv_group.setadapter(groupadapter); // 创建一个popuwidow对象 popupwindow = new popupwindow(view, 200, 250); } // 使其聚集 popupwindow.setfocusable(true); // 设置允许在外点击消失 popupwindow.setoutsidetouchable(true); // 这个是为了点击“返回back”也能使其消失,并且并不会影响你的背景 popupwindow.setbackgrounddrawable(new bitmapdrawable()); windowmanager windowmanager = (windowmanager) getsystemservice(context.window_service); // 显示的位置为:屏幕的宽度的一半-popupwindow的高度的一半 int xpos = windowmanager.getdefaultdisplay().getwidth() / 2 - popupwindow.getwidth() / 2; log.i("coder", "windowmanager.getdefaultdisplay().getwidth()/2:" + windowmanager.getdefaultdisplay().getwidth() / 2); // log.i("coder", "popupwindow.getwidth()/2:" + popupwindow.getwidth() / 2); log.i("coder", "xpos:" + xpos); popupwindow.showasdropdown(parent, xpos, 0); lv_group.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> adapterview, view view, int position, long id) { toast.maketext(poupwindowdemoactivity.this, "groups.get(position)" + groups.get(position), 1000) .show(); if (popupwindow != null) { popupwindow.dismiss(); } } }); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。