栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android用PopupWindow实现新浪微博的分组信息实例

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android用PopupWindow实现新浪微博的分组信息实例

最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用PopupWindow实现的,今天自己也写了一个例子实现了这种效果,希望对大家有帮助。

PopupWindow就是弹出窗口的意思,类似windows下面的开始按钮。PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画.

效果如下:

实现思路:

在一个PopupWindow里放一个ListView,从而来达到分组信息的实现!

具体主要实现代码:
group_list.xml:

 
 
 
   
 
   
 
   
 
 

group_item_view.xml:

 
 
 
   
 
 

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 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); 
      } 
    }); 
 
  } 
 
   
  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(); 
      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(); 
 } 
      } 
    }); 
  } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/160834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号