用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
2020-12-13 05:24
标签:android style blog http java color os 文件 用PopupWindow实现弹出菜单是一个比较好的方式。当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐。 这个实例的效果是这样的:点击按钮后,一个菜单从屏幕的右边滑入到屏幕中,点击按钮/空白处后菜单消失。 布局文件时一个按钮,我就不贴出代码了。下面是菜单的布局: MainActivity.java 菜单的动画 style.xml slide_left_in.xml slide_right_out.xml 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局),搜素材,soscw.com 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局) 标签:android style blog http java color os 文件 原文地址:http://www.cnblogs.com/tianzhijiexian/p/3868314.htmlxml version="1.0" encoding="utf-8"?>
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1" />
Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2" />
Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3" />
Button
android:id="@+id/closet_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭" />
LinearLayout>
package com.kale.popup;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
LayoutInflater inflater = null;
private PopupWindow popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
initPopWindow();
}
/**
* 初始化popWindow
* */
private void initPopWindow() {
View popView = inflater.inflate(R.layout.menu, null);
popupWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(0));
//设置popwindow出现和消失动画
popupWindow.setAnimationStyle(R.style.PopMenuAnimation);
Button btn01 = (Button)popView.findViewById(R.id.button1);
btn01.setOnClickListener(this);
Button btn02 = (Button)popView.findViewById(R.id.button2);
btn02.setOnClickListener(this);
Button btn03 = (Button)popView.findViewById(R.id.button3);
btn03.setOnClickListener(this);
Button closetBtn = (Button)popView.findViewById(R.id.closet_btn);
closetBtn.setOnClickListener(this);
}
public void buttonListener(View v) {
showPop(v, 0, 0, 0);
}
/**
* 显示popWindow
* */
public void showPop(View parent, int x, int y,int postion) {
//设置popwindow显示位置
popupWindow.showAsDropDown(parent);
//获取popwindow焦点
popupWindow.setFocusable(true);
//设置popwindow如果点击外面区域,便关闭。
popupWindow.setOutsideTouchable(true);
popupWindow.update();
}
@Override
public void onClick(View v) {
Button btn = (Button) v;
Toast.makeText(MainActivity.this, btn.getText(), 0).show();
popupWindow.dismiss();
}
}
style name="PopMenuAnimation" parent="@android:style/Animation">
item name="android:windowEnterAnimation">@anim/slide_left_initem>
item name="android:windowExitAnimation">@anim/slide_right_outitem>
style>
xml version="1.0" encoding="utf-8"?>
set xmlns:android="http://schemas.android.com/apk/res/android" >
translate
android:duration="200"
android:fromXDelta="100.0%p"
android:toXDelta="0.0" />
set>
xml version="1.0" encoding="utf-8"?>
set xmlns:android="http://schemas.android.com/apk/res/android" >
translate
android:duration="100"
android:fromXDelta="0.0"
android:toXDelta="100.0%p" />
set>
文章标题:用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
文章链接:http://soscw.com/essay/30940.html