热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现美团下拉功能

这篇文章主要为大家详细介绍了Android实现美团下拉功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现美团下拉功能的具体代码,供大家参考,具体内容如下

效果图

实现

布局文件:

<&#63;xml version="1.0" encoding="utf-8"&#63;>


  

  

  

    

      

      
    

    

      

      
    

    

      

      
    
  

  

  

    

    
  

<&#63;xml version="1.0" encoding="utf-8"&#63;>


  

    
  

  

<&#63;xml version="1.0" encoding="utf-8"&#63;>


  

  

Activity代码:

package com.example.hfs.popwindowmeituan;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.PopupWindow.OnDismissListener;

public class MainActivity extends Activity implements
    OnClickListener {
  private ListView listView, popListView;
  private ProgressBar progressBar;
  private List> menuData1, menuData2, menuData3;
  private PopupWindow popMenu;
  private SimpleAdapter menuAdapter1, menuAdapter2, menuAdapter3;

  private LinearLayout product, sort, activity;
  private ImageView cartIv;
  private TextView productTv, sortTv, activityTv, titleTv;
  private int green, grey;

  private String currentProduct, currentSort, currentActivity;
  private int menuIndex = 0;

  private Intent intent;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_supplier_list);
    findView();
    initMenuData();
    initPopMenu();

  }
  private void initMenuData() {
    menuData1 = new ArrayList>();
    String[] menuStr1 = new String[] { "全部", "粮油", "衣服", "图书", "电子产品",
        "酒水饮料", "水果" };
    Map map1;
    for (int i = 0, len = menuStr1.length; i ();
      map1.put("name", menuStr1[i]);
      menuData1.add(map1);
    }

    menuData2 = new ArrayList>();
    String[] menuStr2 = new String[] { "综合排序", "配送费最低" };
    Map map2;
    for (int i = 0, len = menuStr2.length; i ();
      map2.put("name", menuStr2[i]);
      menuData2.add(map2);
    }

    menuData3 = new ArrayList>();
    String[] menuStr3 = new String[] { "优惠活动", "特价活动", "免配送费",
        "可在线支付" };
    Map map3;
    for (int i = 0, len = menuStr3.length; i ();
      map3.put("name", menuStr3[i]);
      menuData3.add(map3);
    }
  }
  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
      case R.id.supplier_list_product:
        productTv.setTextColor(Color.parseColor("#39ac69"));
        popListView.setAdapter(menuAdapter1);
        popMenu.showAsDropDown(product, 0, 2);
        menuIndex = 0;
        break;
      case R.id.supplier_list_sort:
        sortTv.setTextColor(Color.parseColor("#39ac69"));
        popListView.setAdapter(menuAdapter2);
        popMenu.showAsDropDown(product, 0, 2);
        menuIndex = 1;
        break;
      case R.id.supplier_list_activity:
        activityTv.setTextColor(Color.parseColor("#39ac69"));
        popListView.setAdapter(menuAdapter3);
        popMenu.showAsDropDown(product, 0, 2);
        menuIndex = 2;
        break;

    }
  }
  protected void findView() {
    listView = (ListView) findViewById(R.id.supplier_list_lv);
    product = (LinearLayout) findViewById(R.id.supplier_list_product);
    sort = (LinearLayout) findViewById(R.id.supplier_list_sort);
    activity = (LinearLayout) findViewById(R.id.supplier_list_activity);
    productTv = (TextView) findViewById(R.id.supplier_list_product_tv);
    sortTv = (TextView) findViewById(R.id.supplier_list_sort_tv);
    activityTv = (TextView) findViewById(R.id.supplier_list_activity_tv);
    titleTv = (TextView) findViewById(R.id.supplier_list_title_tv);
    cartIv = (ImageView) findViewById(R.id.supplier_list_cart_iv);
    progressBar = (ProgressBar) findViewById(R.id.progress);

    product.setOnClickListener(this);
    sort.setOnClickListener(this);
    activity.setOnClickListener(this);
    cartIv.setOnClickListener(this);
  }
  private void initPopMenu() {
    initMenuData();
    View cOntentView= View.inflate(this, R.layout.popwin_supplier_list,
        null);
    popMenu = new PopupWindow(contentView,
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.MATCH_PARENT);
    popMenu.setOutsideTouchable(true);
    popMenu.setBackgroundDrawable(new BitmapDrawable());
    popMenu.setFocusable(true);
    popMenu.setAnimationStyle(R.style.popwin_anim_style);
    popMenu.setOnDismissListener(new OnDismissListener() {
      public void onDismiss() {
        productTv.setTextColor(Color.parseColor("#5a5959"));
        sortTv.setTextColor(Color.parseColor("#5a5959"));
        activityTv.setTextColor(Color.parseColor("#5a5959"));
      }
    });

    popListView = (ListView) contentView
        .findViewById(R.id.popwin_supplier_list_lv);
    contentView.findViewById(R.id.popwin_supplier_list_bottom)
        .setOnClickListener(new OnClickListener() {
          public void onClick(View arg0) {
            popMenu.dismiss();
          }
        });
    menuAdapter1 = new SimpleAdapter(this, menuData1,
        R.layout.item_listview_popwin, new String[] { "name" },
        new int[] { R.id.listview_popwind_tv });
    menuAdapter2 = new SimpleAdapter(this, menuData2,
        R.layout.item_listview_popwin, new String[] { "name" },
        new int[] { R.id.listview_popwind_tv });
    menuAdapter3 = new SimpleAdapter(this, menuData3,
        R.layout.item_listview_popwin, new String[] { "name" },
        new int[] { R.id.listview_popwind_tv });

    popListView.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<&#63;> arg0, View arg1, int pos,
                  long arg3) {
        popMenu.dismiss();
        if (menuIndex == 0) {
          currentProduct = menuData1.get(pos).get("name");
          titleTv.setText(currentProduct);
          productTv.setText(currentProduct);
          Toast.makeText(MainActivity.this, currentProduct, Toast.LENGTH_SHORT).show();
        } else if (menuIndex == 1) {
          currentSort = menuData2.get(pos).get("name");
          titleTv.setText(currentSort);
          sortTv.setText(currentSort);
          Toast.makeText(MainActivity.this, currentSort, Toast.LENGTH_SHORT).show();
        } else {
          currentActivity = menuData3.get(pos).get("name");
          titleTv.setText(currentActivity);
          activityTv.setText(currentActivity);
          Toast.makeText(MainActivity.this, currentActivity, Toast.LENGTH_SHORT).show();
        }
      }
    });
  }
}

其实和我博客里面有一篇自定义Spinner很像

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


推荐阅读
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 优化Jenkins首次启动速度
    本文详细描述了在启动Jenkins后遇到的长时间加载问题,并提供了一种通过修改更新中心配置文件来显著提升启动速度的有效解决方案。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文探讨了如何在Java中使用JAXB解组两个具有相同名称但不同结构的对象。我们将介绍一个抽象类Bar及其具体实现,并展示如何正确地解析XML文档以获取正确的对象实例。 ... [详细]
  • Python3 中使用 lxml 模块解析 XPath 数据详解
    XPath 是一种用于在 XML 文档中查找信息的路径语言,同样适用于 HTML 文件的搜索。本文将详细介绍如何利用 Python 的 lxml 模块通过 XPath 技术高效地解析和抓取网页数据。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
author-avatar
书友51676198
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有