Penggunaan asas PopupWindow (kotak terapung)
Pengenalan kepada bahagian ini:
1 Tafsiran kaedah berkaitanApa yang dibawa oleh bahagian ini kepada anda ialah kawalan UI terakhir yang digunakan untuk memaparkan maklumat-PopupWindow (kotak yang digantung), jika anda ingin tahu Apakah rupa dia? Anda boleh membuka QQ pada telefon anda, tekan lama item dalam senarai, dan mesej hitam kecil akan muncul. Kotak dialog, jenis ini ialah PopupWindow Berbeza daripada kotak dialog AlertDialog, kedudukannya boleh sewenang-wenangnya; Pegawai mempunyai ayat ini untuk diperkenalkan PopupWindow:
Tetingkap timbul yang boleh digunakan untuk memaparkan paparan sewenang-wenangnya Tetingkap timbul ialahbekas terapung yang muncul di atas arus. aktiviti.
Mungkin bermaksud: kawalan tetingkap timbul yang boleh digunakan untuk memaparkan sebarang Paparan dan akan terapung di atas aktiviti semasa
Mari kita pelajari tentang kawalan ini ~
Dokumen rasmi: PopupWindow
1) Beberapa kaedah pembinaan yang biasa digunakan
<. 🎜>Kami dapat melihat dalam dokumen bahawa terdapat sebanyak sembilan kaedah pembinaan PopupWindow yang diberikan kepada kami hanya yang sebenar disiarkan di sini. Beberapa kaedah pembinaan yang kerap digunakan dalam pembangunan:
public PopupWindow (Context context)2) Beberapa kaedah yang biasa digunakan.
- public PopupWindow(View contentView, int width , int ketinggian)
- Tetingkap Popup awam(Paparan kandungan)
- Tetingkap Popup awam(Paparan kandungan, lebar int, tinggi int, boleh fokus boolean)
- Tidak perlu menjelaskan parameter contentView ialah View yang dipaparkan oleh PopupWindow menunjukkan sama ada untuk memaparkan fokus
Berikut ialah beberapa kaedah yang lebih biasa digunakan untuk yang lain, anda boleh menyemak sendiri dokumentasi:
- setContentView(Lihat contentView): Tetapkan Paparan yang dipaparkan oleh PopupWindow
- getContentView(): Dapatkan Paparan dipaparkan oleh PopupWindow
- showAsDropDown(Lihat sauh): relatif kepada kedudukan kawalan tertentu (secara langsung kiri bawah), tiada offset
- showAsDropDown(Lihat sauh, int xoff, int yoff) : Berbanding dengan kedudukan kawalan tertentu, terdapat offset
- showAtLocation(Lihat induk, int gravity, int x, int y): Berbanding dengan kedudukan kawalan induk (contohnya, Gravity.CENTER di tengah, Gravity.BOTTOM di bawah, dsb.), anda boleh menetapkan offset atau tiada offset. PS: Parameter induk hanya perlu menjadi paparan dalam aktiviti!
- setWidth/setHeight: Tetapkan lebar dan tinggi Anda juga boleh menentukan lebar dan tinggi dalam kaedah pembinaan. Selain menulis nilai tertentu, anda juga boleh menggunakan WRAP_CONTENT atau MATCH_PARENT. Sifat lebar dan ketinggian popupWindow secara langsung sepadan dengan Paparan lapisan pertama.
- setFocusable(true): Tetapkan fokus Selepas PopupWindow muncul, semua skrin sentuh dan butang fizikal dikawal oleh PopupWindows. berurusan dengan. Respons kepada sebarang peristiwa lain mesti berlaku selepas PopupWindow hilang (kecuali acara peringkat sistem seperti rumah). Contohnya, apabila PopupWindow seperti ini muncul, menekan kekunci belakang mula-mula akan membuatkan PopupWindow hilang, dan menekannya untuk kali kedua akan keluar. Aktiviti, lebih tepatnya, jika anda ingin keluar dari aktiviti, anda mesti membuat PopupWindow hilang, kerana PopupWindow tidak akan hilang dalam apa jua keadaan apabila anda menekan semula Ia mesti dilakukan apabila latar belakang PopupWindow ditetapkan.
- setAnimationStyle(int): Tetapkan kesan animasi
2. Gunakan contoh kod
untuk menjalankan Rendering :
Kod kunci pelaksanaan:
Mula-mula tampal fail animasi: anim_pop.xml :
<set xmlns:android="http://schemas.android . com/apk/res/android">
<alpha android:fromAlpha="0"
android:toAlpha="1"
android:duration="2000">
< ; /alpha>
</set>
接着是popupWindow的布局:item_popip.xml:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background ="../style/images/ic_pop_bg"
android:orientation="vertical">
<Butang
android:id="@+id/btn_xixi" android :layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="嘻嘻>"< android
<Butang
android:id="@+id/btn_hehe"
android:layout_width="wrap_content"
. android:padding= "5dp"
android:text="呵呵"
android:textSize="18sp" />
</LinearLayout>
<🎜
MainActivity.java:
pribadi Button btn_show;
pribadi Context mContext;
<🎜 > ate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
b View n_show);
btn_show .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void initPopWindow(View v) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_popup, null, false = Button bxi ) view.findViewById(R.id.btn_xixi);
Butang btn_hehe = (Button) view.findViewById(R.id.btn_hehe);
//1.丄径逪次是加载的View,宽高
akhir PopupWindow popWindow = baharu PopupWindow(lihat,
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup. APtru Params;🎜 ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup. popWindow.setAnimationStyle(R.anim.anim_pop); // 设置 加载 动画
// 这些 为了 点击 非 Popupwindow 区域, popupwindow 会 消失 的, 如果 如果 没有 的 的 的 的 的 了 把 把 把 把 把 把 把 把 把 把 把 把 把 把 把 把 把 把你按多少次后退键
//PopupWindow并不会关闭,而且退不出程序,加上下丆迁问题
Popwindow.Settouch (True);
Popwindow.SettouchInterceptor (Paparan Baharu.onTouchListener () {
@Override
PUBLIC BOOLEN ONTOUCH (Lihat V, M, M, M, M, M {
Kembalikan false;
/ / Jika benar dikembalikan di sini, acara sentuh akan disekat
(ColorDrawable baharu(0x00000000)); //Ia berkesan untuk menetapkan latar belakang untuk popWindow
Shift amount
popWindow.showAsDropDown(v, 50, 0);
//Tetapkan acara butang dalam popupWindow
btn_xixi.setOnClickListener(new View.OnClickListener() {<🎜 @Override
public void onClick(View v) {
Toast.makeText (MainActivity.this, "You clicked", Toast.LENGTH_SHORT).show();
}
}); > btn_hehe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.make Text(MainActivity.this, "You clicked haha~", Toast .LENGTH_SHORT ).show();
popWindow.dismiss();
}
}); Ringkasan bahagian ini:
Penjelasan Terperinci Android PopupWindow
Baiklah, itu sahaja, terima kasih~