`
zhanhao
  • 浏览: 286934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PopupWindow+listItem 泡泡效果

阅读更多



 
package com.my;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class PopupwindowFoListItemActivity extends Activity implements OnItemClickListener {
    String[] data;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initData();
        setContentView(initView());
    }

    private void initData() {
        data = new String[40];
        for (int i = 0; i < data.length; i++) {
            data[i] = "item" + i;
        }
    }

    private LinearLayout initView() {
        LinearLayout linearLayout = new LinearLayout(this);
        ListView listView = new ListView(this);
        listView.setAdapter(new MyAdapter());
        listView.setOnItemClickListener(this);
        //设置listview的触摸监听事件 当用户触摸 Popupwindow窗口以外的东西时 Popwindow隐藏
        listView.setOnTouchListener(new View.OnTouchListener() {
           
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.d("dbug","onTouch");
                if(popupWindow!=null&&popupWindow.isShowing())
                {                   
                    popupWindow.dismiss();
                    popupWindow =null;
                } 
                return false;
            }
        });
        linearLayout.addView(listView);
        return linearLayout;
    }

    PopupWindow popupWindow;   
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this,""+position,Toast.LENGTH_SHORT).show();
        LinearLayout layout = (LinearLayout)View.inflate(this, R.layout.main, null);
        if (popupWindow == null) {
            popupWindow = new PopupWindow(layout);
            popupWindow.showAtLocation(view, Gravity.NO_GRAVITY, 0, 0);
            //设置窗口的宽度和高度
            popupWindow.setWidth(view.getWidth());
            popupWindow.setHeight(view.getHeight());
            // // requestWindowFeature(Window.FEATURE_NO_TITLE);没有标题时: int y =
            // view.getTop()+38;
            // // 当requestWindowFeature()为默认值时:int y = view.getTop()+75;
            // //当设置为全屏时int y = view.getTop();由此title部分为75-38=37 title上面部分为38
            //得到窗口y轴的值
            int y = view.getTop() + 75;
            //设置窗口的动画
           popupWindow.setAnimationStyle(R.style.AnimationPreview);
//            popupWindow.setFocusable(true); 
            popupWindow.update(0, y, view.getWidth(), view.getHeight()); 
          
        } else {
            popupWindow.dismiss();
            popupWindow = null;
        }
    }

    class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout linearLayout = (LinearLayout)View.inflate(PopupwindowFoListItemActivity.this,R.layout.listitem, null);
            TextView textView =(TextView)linearLayout.findViewById(R.id.tv1);
            textView.setText(data[position]);
            return linearLayout;
        }
    }
}

  • 大小: 16.7 KB
0
0
分享到:
评论
1 楼 lixiaolongxuexi 2011-10-22  
好像有点问题哦。

相关推荐

    使用PopupWindow + 2个ListView实现仿 美团/淘宝/百度糯米 多级分类菜单效果

    - **动画效果**:为`PopupWindow`的显示和消失添加平滑的动画效果,提升用户体验。 - **适配不同设备**:确保`PopupWindow`的大小和位置能在不同尺寸和方向的屏幕上正确显示。 - **触摸事件处理**:处理触摸事件,...

    PopupWindow+GridView在屏幕底部显示

    在标题“PopupWindow+GridView在屏幕底部显示”中,提到的是如何将PopupWindow与GridView结合使用,并使其在屏幕底部展示。这通常用于创建下拉菜单或者快速选项列表。 首先,我们需要理解PopupWindow的基本用法。...

    PopupWindow+ListView

    在Android开发中,`PopupWindow` 和 `ListView` 是两种常用组件,它们分别用于实现弹出窗口和可滚动列表的功能。结合使用时,可以创建出交互性更强的UI设计,如下拉菜单、浮层选择器等。让我们深入探讨如何在Android...

    两种方式实现仿微信顶部标题栏弹窗效果(PopupWindow+Activity)

    使用了两种不同的方式实现了仿微信顶部标题栏弹窗效果的(PopupWindow+Activity),项目内含:源码+效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9093821

    Android ExpandableListView+PopupWindow+json

    在本项目"Android ExpandableListView+PopupWindow+json"中,这两个组件被巧妙地结合起来,以动态加载来自JSON数据源的信息。 `ExpandableListView`是一个可扩展的列表视图,允许用户展开和折叠各个组,每个组内...

    PopupWindow+ListView实现Android搜索框

    以上就是使用`PopupWindow+ListView`实现Android搜索框的基本步骤。实际开发中,你可能还需要处理更多细节,如动画效果、键盘的自动收起和展开、输入提示文字等。通过熟练掌握这些技术,你可以创建出更加直观、易用...

    popupwindow + listview 多级展示

    在Android开发中,`PopupWindow` 和 `ListView` 是两种常用组件,它们结合可以实现丰富的交互效果,如多级菜单的展示。`PopupWindow` 是一个可以浮动在屏幕上的窗口,而`ListView` 则是用于展示可滚动的列表数据。在...

    PopupWindow+ListView+在item顶部与底部跳跃

    本篇文章将深入探讨如何将PopupWindow与ListView结合使用,让ListView的item在顶部与底部之间实现动态跳跃效果。 首先,PopupWindow是Android提供的一种轻量级窗口,它可以浮现在Activity或View之上,用于展示临时...

    安卓PopupWindow+ListView实现登录账号选择下拉框

    在Android开发中,`PopupWindow` 是一个非常实用的组件,它允许开发者创建浮动、弹出式的窗口,常用于实现各种下拉菜单、提示框等效果。本篇将重点讲解如何利用`PopupWindow` 结合`ListView` 实现登录账号的选择...

    Android案例页面底部弹框PopupWindow+竖直滑动选择器WheelView的实现

    4. 设置`PopupWindow`的其他属性,如背景颜色、动画效果等。 5. 调用`showAsDropDown()`或`showAtLocation()`显示弹出框。 例如: ```java // 创建布局 View popupView = LayoutInflater.from(context).inflate(R....

    安卓自定义PoPUpWidow(弹窗中含有viewpager+gridView)

    在这个场景中,我们看到一个`PopupWindow`不仅包含了一个`ViewPager`,还包含了一个`GridView`,这样的设计可以实现丰富的交互效果,如滑动浏览和网格布局的选择。下面将详细讲解如何实现这样一个功能。 首先,`...

Global site tag (gtag.js) - Google Analytics