亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android popwindow實現左側彈出菜單層及PopupWindow主要方法介紹

2020-04-11 12:32:27
字體:
來源:轉載
供稿:網友

PopupWindow可以實現浮層效果,主要方法有:可以自定義view,通過LayoutInflator方法;可以出現和退出時顯示動畫;可以指定顯示位置等。

為了將PopupWindow的多個功能展現并力求用簡單的代碼實現,編寫了一個點擊按鈕左側彈出菜單的功能,實現出現和退出時顯示動畫效果并點擊其他區域時彈出層自動消失,效果圖如下:
源碼:
1.PopwindowOnLeftActivity.java

復制代碼 代碼如下:

package com.pop.main;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.PopupWindow;
public class PopwindowOnLeftActivity extends Activity {
// 聲明PopupWindow對象的引用
private PopupWindow popupWindow;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 點擊按鈕彈出菜單
Button pop = (Button) findViewById(R.id.popBtn);
pop.setOnClickListener(popClick);
}
//點擊彈出左側菜單的顯示方式
OnClickListener popClick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getPopupWindow();
// 這里是位置顯示方式,在按鈕的左下角
popupWindow.showAsDropDown(v);
// 這里可以嘗試其它效果方式,如popupWindow.showAsDropDown(v,
// (screenWidth-dialgoWidth)/2, 0);
// popupWindow.showAtLocation(findViewById(R.id.layout),
// Gravity.CENTER, 0, 0);
}
};
/**
* 創建PopupWindow
*/
protected void initPopuptWindow() {
// TODO Auto-generated method stub
// 獲取自定義布局文件pop.xml的視圖
View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,
false);
// 創建PopupWindow實例,200,150分別是寬度和高度
popupWindow = new PopupWindow(popupWindow_view, 200, 150, true);
// 設置動畫效果
popupWindow.setAnimationStyle(R.style.AnimationFade);
//點擊其他地方消失
popupWindow_view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
popupWindow = null;
}
return false;
}
});
// pop.xml視圖里面的控件
Button open = (Button) popupWindow_view.findViewById(R.id.open);
Button save = (Button) popupWindow_view.findViewById(R.id.save);
Button close = (Button) popupWindow_view.findViewById(R.id.close);
// pop.xml視圖里面的控件觸發的事件
// 打開
open.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 這里可以執行相關操作
System.out.println("打開操作");
// 對話框消失
popupWindow.dismiss();
}
});
// 保存
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 這里可以執行相關操作
System.out.println("保存操作");
popupWindow.dismiss();
}
});
// 關閉
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 這里可以執行相關操作
System.out.println("關閉操作");
popupWindow.dismiss();
}
});
}
/***
* 獲取PopupWindow實例
*/
private void getPopupWindow() {
if (null != popupWindow) {
popupWindow.dismiss();
return;
} else {
initPopuptWindow();
}
}
}

主要界面
2.main.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button android:id="@+id/popBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/pop_left" />
</LinearLayout>

彈出層的布局
3.pop.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/darker_gray">
<Button android:id="@+id/open"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn"
android:text="@string/open"/>
<Button android:id="@+id/save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn"
android:text="@string/save"/>
<Button android:id="@+id/close"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn"
android:text="@string/close"/>
</LinearLayout>

value下的style文件
4.style
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AnimationFade">
<!-- PopupWindow左右彈出的效果-->
<item name="android:windowEnterAnimation">@anim/in_lefttoright</item>
<item name="android:windowExitAnimation">@anim/out_righttoleft</item>
</style>
</resources>

value下的string文件
5.string.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, PopwindowOnLeftActivity!</string>
<string name="app_name">PopwindowOnLeft</string>
<string name="pop_left">彈出左側菜單</string>
<string name="open">打開</string>
<string name="save">保存</string>
<string name="close">關閉</string>
</resources>

anim目錄下的文件
出現時從左往右的動畫文件
6.in_lefttoright.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 定義從左向右進入的動畫 -->
<translate
android:fromXDelta="-100%"
android:toXDelta="0"
android:duration="500"/>
</set>

退出時從右往左消失的動畫
7.out_righttoleft.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 定義從右向左動畫退出動畫 -->
<translate
android:fromXDelta="0"
android:toXDelta="-100%"
android:duration="500"/>
</set>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人激情视频| 日本人成精品视频在线| 亚洲天堂第二页| 国产精品91免费在线| 欧美一区二区大胆人体摄影专业网站| 日韩**中文字幕毛片| 国产欧美一区二区三区久久人妖| 97超级碰在线看视频免费在线看| 亚洲成人av片在线观看| 亚洲国产精品一区二区久| 色噜噜国产精品视频一区二区| 成人免费在线视频网站| 亚洲午夜精品久久久久久性色| 免费99精品国产自在在线| 91极品视频在线| 黑人巨大精品欧美一区二区三区| 91高潮精品免费porn| 亚洲人成在线观看网站高清| 欧美黄色性视频| 精品成人在线视频| 国产精品亚洲自拍| 少妇高潮久久77777| 国产成人在线一区| 国产性色av一区二区| 欧美激情在线视频二区| 国产精品高潮呻吟久久av黑人| 欧美精品电影免费在线观看| 欧美激情一区二区三区久久久| 国产精品美女久久久免费| 亚洲精品自在久久| 中文字幕亚洲综合久久| 一区二区中文字幕| 91国产精品91| 日韩精品久久久久久福利| 亚洲激情在线观看视频免费| 亚洲人成电影网站色…| 91精品国产99久久久久久| 色综合久久中文字幕综合网小说| 国产精品美乳一区二区免费| 在线一区二区日韩| 日韩av不卡在线| 国产精品亚洲视频在线观看| 国产精品极品美女粉嫩高清在线| 精品中文字幕在线观看| 久久午夜a级毛片| 高清日韩电视剧大全免费播放在线观看| 亚洲第一网站免费视频| 国产一区二区日韩| 亚洲桃花岛网站| 97人洗澡人人免费公开视频碰碰碰| 精品美女永久免费视频| 久久av资源网站| 日韩在线中文字幕| 欧美视频国产精品| 国产亚洲福利一区| 欧美裸体xxxx极品少妇软件| 一区二区av在线| 日韩在线观看成人| 国产精品成人观看视频国产奇米| 亚洲天堂成人在线| 亚洲缚视频在线观看| 欧美日韩国产区| 久久久久久91香蕉国产| 亚洲综合最新在线| 国产精品www色诱视频| 欧美日韩亚洲一区二区三区| 久久成人在线视频| 亚洲成色777777在线观看影院| 欧美精品在线第一页| 国产欧美一区二区| 97精品视频在线观看| 国产91露脸中文字幕在线| 久久国产精品久久国产精品| 亚洲人成啪啪网站| 久久精品国产成人| 亚洲人成77777在线观看网| 一区二区三区美女xx视频| 精品日本美女福利在线观看| 91久久久亚洲精品| 亚洲第一男人av| 欧美成人精品一区二区三区| 中文字幕久热精品视频在线| 欧美黑人狂野猛交老妇| 国产精品一区二区性色av| 中文字幕久久久| 亚洲电影免费在线观看| 久久影院模特热| 亚洲 日韩 国产第一| 欧美成人四级hd版| 久久福利视频网| 国产精品高精视频免费| 成人97在线观看视频| 亚洲一区二区三区xxx视频| www国产精品视频| 国产精品高潮在线| 国产亚洲福利一区| 亚洲日本欧美日韩高观看| 精品少妇v888av| 日韩av在线直播| 丝袜情趣国产精品| 日韩av电影中文字幕| 伊人久久男人天堂| 国产日韩欧美电影在线观看| 亚洲老司机av| 亚洲摸下面视频| 国产精品久久久久久久久粉嫩av| 久久中国妇女中文字幕| 亚洲国产精品电影| 国产精品成人观看视频国产奇米| 97精品在线视频| 911国产网站尤物在线观看| 中文字幕免费国产精品| 91精品视频播放| 亚洲精品自拍第一页| 91精品国产综合久久香蕉最新版| 亚洲sss综合天堂久久| 国产精品美女网站| 久久噜噜噜精品国产亚洲综合| 亚洲一区二区自拍| 亚洲精品欧美日韩| 成人精品一区二区三区| 欧美日韩午夜视频在线观看| 日产精品99久久久久久| 成人黄色免费在线观看| 国产精品大陆在线观看| 伊人久久久久久久久久久| 一区二区三区在线播放欧美| 欧美激情一区二区三级高清视频| 欧美在线观看日本一区| 国产区亚洲区欧美区| 97视频在线观看亚洲| 91久久综合亚洲鲁鲁五月天| 亚洲人精选亚洲人成在线| 成人激情av在线| 中文字幕亚洲欧美日韩在线不卡| 久久久久久久久国产| 国产精品久久一区| 亚州成人av在线| 国产精品久久视频| 精品一区二区电影| 欧美在线免费观看| 亚洲欧美综合图区| 青青草精品毛片| 国产精品v片在线观看不卡| 菠萝蜜影院一区二区免费| 亚洲精品视频免费在线观看| 久久青草福利网站| 日韩中文字幕精品视频| 国模私拍视频一区| 亚洲欧美激情一区| 岛国视频午夜一区免费在线观看| 日韩国产欧美精品一区二区三区| 日韩欧美在线字幕| 国产一区二区三区丝袜| 日韩免费在线观看视频| 亚洲第一色中文字幕| 久久久久久久久久久91| 久久久久久久久久亚洲| 尤物yw午夜国产精品视频明星| 国产在线播放不卡| 色琪琪综合男人的天堂aⅴ视频| 欧美激情一区二区三级高清视频| 久久久人成影片一区二区三区| 亚洲成人网在线观看|