android实现底部弹出菜单,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 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 getResponseDataClass() {

return InformmationData.class;

}

@Override

protected Map 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;

/**

* Created by Administrator on 2017/7/21 0021.

*/

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

popupWindow. dismiss();

}

}

return true;

}

}

layout_popwindow.xml

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:orientation="vertical" >

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" >

android:background="#F2F2F2"

android:id="@+id/btn1"

android:layout_width="match_parent"

android:layout_height="40dp"

android:text="分享到微信好友"

android:textColor="@color/black"

/>

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"

/>

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"

/>

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"

/>

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"

/>

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" />

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

其中ppwindow_hide_anim.xml

android:duration="300"

android:fromXDelta="0"

android:toXDelta="0"

android:fromYDelta="0"

android:toYDelta="1920"

/>

android:duration="300"

android:fromAlpha="1"

android:toAlpha="0"

/>

其中ppwindow_show_anim.xml

android:duration="300"

android:fromXDelta="0"

android:toXDelta="0"

android:fromYDelta="1920"

android:toYDelta="0"

/>

android:duration="300"

android:fromAlpha="0"

android:toAlpha="1"

/>

最后上图:

5674c4e6019941a460fdefd13a00de3d.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值