文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android如何实现底部缓慢弹出菜单

2023-05-30 19:49

关注

这篇文章主要介绍了Android如何实现底部缓慢弹出菜单,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

项目要求要做一个从底部缓慢弹出一个Button Menu

开始编码:
MyselfFragment

package io.dcloud.H5B79C397.fragment;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.RelativeLayout;import android.widget.Toast;import com.android.volley.VolleyError;import com.vanda.vandalibnetwork.fragment.BaseFragment;import java.util.Map;import cn.sharesdk.framework.ShareSDK;import cn.sharesdk.onekeyshare.OnekeyShare;import cn.sharesdk.sina.weibo.SinaWeibo;import cn.sharesdk.tencent.qq.QQ;import cn.sharesdk.wechat.friends.Wechat;import cn.sharesdk.wechat.moments.WechatMoments;import io.dcloud.H5B79C397.R;import io.dcloud.H5B79C397.Urls;import io.dcloud.H5B79C397.activity.BottomMenu;import io.dcloud.H5B79C397.activity.LoginActivity;import io.dcloud.H5B79C397.activity.Myself_About_fae;import io.dcloud.H5B79C397.activity.Myself_Invitation;import io.dcloud.H5B79C397.activity.Myself_help;import io.dcloud.H5B79C397.activity.Myself_setting;import io.dcloud.H5B79C397.activity.RegisterActivity;import io.dcloud.H5B79C397.activity.user_management;import io.dcloud.H5B79C397.pojo.InformmationData;import io.dcloud.H5B79C397.util.ActionBarUtil;import io.dcloud.H5B79C397.util.ExtUtils;public class MyselfFragment extends BaseFragment<InformmationData> implements View.OnClickListener {  private Context mContext;  private View view;  private BottomMenu menuWindow;  private RelativeLayout layout_advise, layout_collect, layout_logo, layout_share, layout_qr_code, layout_help, layout_set, layout_url;  private Button btnLogin, btnRegister;  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,               Bundle savedInstanceState) {    view = inflater.inflate(R.layout.fragment_information, container, false);    initView();    return view;  }  @Override  public void onStart() {    super.onStart();  }  private void initView() {    new ActionBarUtil(view, R.id.actionBar, R.id.Back, R.id.Title, R.id.Activity, "我的管理中心", getActivity(), 2);    layout_advise = (RelativeLayout) view.findViewById(R.id.myself_advise);    layout_collect = (RelativeLayout) view.findViewById(R.id.myself_collect);    layout_logo = (RelativeLayout) view.findViewById(R.id.myself_logo);    layout_share = (RelativeLayout) view.findViewById(R.id.myself_share);    layout_qr_code = (RelativeLayout) view.findViewById(R.id.myself_qr_code);    layout_help = (RelativeLayout) view.findViewById(R.id.myself_help);    layout_set = (RelativeLayout) view.findViewById(R.id.myself_set);    layout_url = (RelativeLayout) view.findViewById(R.id.myself_url);    btnLogin = (Button) view.findViewById(R.id.myself_login);    btnRegister = (Button) view.findViewById(R.id.myself_register);    layout_advise.setOnClickListener(this);    layout_collect.setOnClickListener(this);    layout_logo.setOnClickListener(this);    layout_share.setOnClickListener(this);    layout_qr_code.setOnClickListener(this);    layout_help.setOnClickListener(this);    layout_set.setOnClickListener(this);    layout_url.setOnClickListener(this);    btnLogin.setOnClickListener(this);    btnRegister.setOnClickListener(this);  }  @Override  public void onClick(View v) {    switch (v.getId()) {      case R.id.myself_advise:        startActivity(new Intent(getActivity(), user_management.class));        break;      case R.id.myself_collect:        break;      case R.id.myself_logo:        Intent intent=new Intent(getActivity(),Myself_About_fae.class);        startActivity(intent);        break;      case R.id.myself_share:        menuWindow = new BottomMenu(mContext, clickListener);        menuWindow.show();        break;      case R.id.myself_qr_code:        startActivity(new Intent(getActivity(), Myself_Invitation.class));        break;      case R.id.myself_help:        startActivity(new Intent(getActivity(), Myself_help.class));        break;      case R.id.myself_set:          startActivity(new Intent(getActivity(), Myself_setting.class));        break;      case R.id.myself_url:        Uri uri = Uri.parse("http://www.fae.cn/");        Intent intent1 = new Intent(Intent.ACTION_VIEW, uri);        startActivity(intent1);        break;      case R.id.myself_login:        startActivity(new Intent(getActivity(), LoginActivity.class));        break;      case R.id.myself_register:        startActivity(new Intent(getActivity(), RegisterActivity.class));        break;      default:        break;    }  }  private View.OnClickListener clickListener = new View.OnClickListener(){    public void onClick(View v) {      switch (v.getId()) {        case R.id.btn1:          showZiDingYi(Wechat.NAME);          break;        case R.id.btn2:          showZiDingYi(WechatMoments.NAME);          Toast.makeText(mContext,"这是微信朋友圈",Toast.LENGTH_SHORT).show();          break;        case R.id.sina:          showZiDingYi(SinaWeibo.NAME);          break;        case R.id.QQ:          showZiDingYi(QQ.NAME);          break;        case R.id.more:          Toast.makeText(mContext,"这是更多",Toast.LENGTH_SHORT).show();          break;        default:          break;      }    }  };  private void showZiDingYi(String ss){    ShareSDK.initSDK(getActivity());    OnekeyShare oks = new OnekeyShare();    oks.setSilent(false);    oks.setDialogMode();    oks.setText("xxxxxxxxx");    //oks.setImageUrl("http://sharesdk.cn");    oks.setPlatform(ss);    oks.show(getActivity());  }  public static MyselfFragment newInstance(Context context) {    MyselfFragment fragment = new MyselfFragment();    fragment.mContext = context;    return fragment;  }  public MyselfFragment() {    // Required empty public constructor  }  @Override  protected void processData(InformmationData response) {    super.processData(response);    if (response != null) {    }  }  @Override  protected void errorData(VolleyError volleyError) {    super.errorData(volleyError);    ExtUtils.errorLog("-----MyselfFragment----volleyError--------->", volleyError + "");  }  @Override  protected String getRequestUrl() {    return Urls.URL_PREFIX + "";  }  @Override  protected Class<InformmationData> getResponseDataClass() {    return InformmationData.class;  }  @Override  protected Map<String, String> getParamMap() {    return null;  }}

BottomMenu

package io.dcloud.H5B79C397.activity;import android.app.ActionBar;import android.app.Activity;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.PopupWindow;import io.dcloud.H5B79C397.R;import static io.dcloud.H5B79C397.R.id.btn1;import static io.dcloud.H5B79C397.R.id.btn2;public class BottomMenu implements View.OnClickListener,View.OnTouchListener {  private PopupWindow popupWindow;  private Button wechat, friend,qq,sina,more ,btnCancel;  private View mMenuView;  private Activity mContext;  private View.OnClickListener clickListener;  public BottomMenu(Context context, View.OnClickListener clickListener) {    LayoutInflater inflater = LayoutInflater.from(context);    this.clickListener=clickListener;    mContext= (Activity) context;    mMenuView = inflater.inflate(R.layout.layout_popwindow, null);    wechat= (Button) mMenuView.findViewById(btn1);    friend= (Button) mMenuView.findViewById(btn2);    qq=(Button)mMenuView.findViewById(R.id.QQ) ;    sina=(Button)mMenuView.findViewById(R.id.sina);    more=(Button)mMenuView.findViewById(R.id.more);    btnCancel = (Button) mMenuView.findViewById(R.id.btn_cancel);    btnCancel.setOnClickListener(this);    wechat.setOnClickListener(this);    friend.setOnClickListener(this);    qq.setOnClickListener(this);    sina.setOnClickListener(this);    more.setOnClickListener(this);    popupWindow=new PopupWindow(mMenuView, ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT,true);    popupWindow.setAnimationStyle(R.style.popwin_anim_style);    ColorDrawable dw = new ColorDrawable(context.getResources().getColor(R.color.apha));    popupWindow.setBackgroundDrawable(dw);    mMenuView.setOnTouchListener(this);  }    public void show(){    //得到当前activity的rootView    View rootView=((ViewGroup)mContext.findViewById(android.R.id.content)).getChildAt(0);    popupWindow.showAtLocation(rootView, Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);  }  @Override  public void onClick(View view) {    popupWindow.dismiss();    switch (view.getId()) {      case R.id.btn_cancel:        break;      default:        clickListener.onClick(view);        break;    }  }  @Override  public boolean onTouch(View arg0, MotionEvent event) {    int height = mMenuView.findViewById(R.id.pop_layout).getTop();    int y=(int) event.getY();    if(event.getAction()==MotionEvent.ACTION_UP){      if(y<height){        popupWindow. dismiss();      }    }    return true;  }}

layout_popwindow.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:gravity="center_horizontal"  android:orientation="vertical" >  <LinearLayout    android:id="@+id/pop_layout"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_alignParentBottom="true"    android:gravity="center_horizontal"    android:layout_marginLeft="20dp"    android:layout_marginRight="20dp"    android:orientation="vertical" >    <Button      android:background="#F2F2F2"      android:id="@+id/btn1"      android:layout_width="match_parent"      android:layout_height="40dp"      android:text="分享到微信好友"      android:textColor="@color/black"       />    <Button      android:id="@+id/btn2"      android:layout_width="match_parent"      android:layout_height="40dp"      android:text="分享到微信朋友圈"      android:layout_marginTop="5dp"      android:textColor="@color/black"      android:background="#F2F2F2"      />    <Button      android:id="@+id/QQ"      android:layout_width="match_parent"      android:layout_height="40dp"      android:text="分享到QQ"      android:layout_marginTop="5dp"      android:textColor="@color/black"      android:background="#F2F2F2"      />    <Button      android:id="@+id/sina"      android:layout_width="match_parent"      android:layout_height="40dp"      android:text="分享到新浪微博"      android:layout_marginTop="5dp"      android:textColor="@color/black"      android:background="#F2F2F2"      />    <Button      android:id="@+id/more"      android:layout_width="match_parent"      android:layout_height="40dp"      android:text="分享到更多..."      android:layout_marginTop="5dp"      android:textColor="@color/black"      android:background="#F2F2F2"      />    <Button      android:id="@+id/btn_cancel"      android:layout_width="match_parent"      android:layout_height="50dp"      android:text="取消"      android:layout_marginBottom="10dp"      android:layout_marginTop="15dp"      android:background="#F2F2F2"      android:alpha="100"      android:textStyle="bold" />  </LinearLayout></RelativeLayout>

包anim//放在res目录下其中包括ppwindow_hide_anim.xml和ppwindow_show_anim.xml
其中ppwindow_hide_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">  <translate    android:duration="300"    android:fromXDelta="0"    android:toXDelta="0"    android:fromYDelta="0"    android:toYDelta="1920"    />  <alpha    android:duration="300"    android:fromAlpha="1"    android:toAlpha="0"    /></set>

其中ppwindow_show_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">  <translate    android:duration="300"    android:fromXDelta="0"    android:toXDelta="0"    android:fromYDelta="1920"    android:toYDelta="0"    />  <alpha    android:duration="300"    android:fromAlpha="0"    android:toAlpha="1"    /></set>

最后上图:

Android如何实现底部缓慢弹出菜单

感谢你能够认真阅读完这篇文章,希望小编分享的“Android如何实现底部缓慢弹出菜单”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯