android之弹窗popupWindow
来源:互联网 发布:360游戏优化 编辑:程序博客网 时间:2024/05/17 07:16
最近一直在研究android,还是菜鸟级别,所以想记录在博客里见证自己的成长。老板给了一个不轻不重的活:界面设计,所以一直在水水的做着,现在就开始记录下一点一滴,催促自己努力吧!
在网上找了个例子,代码不全,又查了博主(博客园---noTice501)其他的文章,再加上自己动手改了改,终于能运行了,运行效果如下,
可能是gridView的设置不对,偏移不成功,不过我想要的效果是在最底下的标题栏中点击到某个图标时弹出一个透明的popupwindow,现在离实现不远了啊,呵呵
MainActivity.java
package me.example.popup01;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
public class MainActivity extends Activity {
private GridView gv;
private Button bt1;
private Button bt2;
private Button bt3;
private Button bt4;
private Button bt5;
private int[] icons = { R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher };
private String[] items = { "浏览器", "图片", "相机", "时钟", "音乐", "市场", "拨号", "信息",
"地图" };
private PopupWindow mPop;
private View layout;
private void initPopWindow() {
if (mPop == null) {
mPop = new PopupWindow(layout, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
}
if (mPop.isShowing()) {
mPop.dismiss();
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.bt1);
bt2 = (Button) findViewById(R.id.bt2);
bt3 = (Button) findViewById(R.id.bt3);
bt4 = (Button) findViewById(R.id.bt4);
bt5 = (Button) findViewById(R.id.bt5);
layout = View.inflate(this, R.layout.window, null);
gv = (GridView) layout.findViewById(R.id.gv);
MyAdapter adapter = new MyAdapter(this, items, icons);
gv.setAdapter(adapter);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initPopWindow();
mPop.showAsDropDown(v);// 以这个Button为anchor(可以理解为锚,基准),在下方弹出
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initPopWindow();
mPop.showAsDropDown(v, 20, -20);// 横轴偏移20,纵轴-20,一个状态栏的长度
}
});
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initPopWindow();
mPop.showAtLocation(layout,
Gravity.CENTER, 0, 0);// 原文为mPop.showAtLocation(PopWindow.this.findViewById(R.id.rl),
// Gravity.TOP | Gravity.LEFT, 20, 20); 在我的eclipse中出错了,可能因为我用的是2.3.3吧
//所以就把第一个参数改成layout了,下同!
}
});
bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initPopWindow();
mPop.showAtLocation(layout,
Gravity.BOTTOM | Gravity.LEFT, 0, 60);// 在屏幕顶部|居右,带偏移
}
});
//弹出窗口出现后,点击“clearOut”(bt5)使弹出窗口消失,人性化的设计应该是点击屏幕空白处消失的
bt5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mPop != null) {
mPop.dismiss();
}
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 截获按键事件
if (keyCode == KeyEvent.KEYCODE_MENU) {
initPopWindow();
mPop.showAtLocation(layout, Gravity.BOTTOM
| Gravity.CENTER_HORIZONTAL, 0, 0); // 在屏幕底部
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mPop.isShowing()) {
mPop.dismiss();
} else {
System.exit(0);
}
}
return false;
}
}
// 自定义适配器
class MyAdapter extends BaseAdapter {
private Context _ct;
private String[] _items;
private int[] _icons;
public MyAdapter(Context ct, String[] items, int[] icons) // 构造器,创建时需传入三个参数
{
_ct = ct;
_items = items;
_icons = icons;
}
@Override
public int getCount() {
return _items.length;
}
@Override
public Object getItem(int arg0) {
return _items[arg0];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater factory = LayoutInflater.from(_ct);
View v = (View) factory.inflate(R.layout.gv, null); // 绑定自定义的xml文件,也可以在这里创建一个gridView
ImageView iv = (ImageView) v.findViewById(R.id.icon);
TextView tv = (TextView) v.findViewById(R.id.text);
iv.setImageResource(_icons[position]);
tv.setText(_items[position]);
return v;
}
}
activity_Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:gravity="center"
android:background="@drawable/pic0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn1"
android:textColor="#00ffff"/>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn2"
android:textColor="#00ffff"/>
<Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn3"
android:textColor="#00ffff"/>
<Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn4"
android:textColor="#00ffff"/>
<Button
android:id="@+id/bt5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="clearOut"
android:textColor="#00ffff"/>
</LinearLayout>
window.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gv"
android:background="#808080"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="3"
android:gravity="center">
</GridView>
</LinearLayout>
gv.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"
>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="40px"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffffff"
/>
</LinearLayout>
我只是改了原文的一小部分,也知道自己确实很欠缺,欠缺的很多,但是我肯定会做的更好!
- android之弹窗popupWindow
- PopupWindow---Android PopupWindow弹窗教程
- Android开发技术学习之popupwindow的弹窗实现
- Android之弹窗 PopupWindow简单使用详解
- Android开发技术学习之popupwindow的弹窗实现
- Android PopupWindow弹窗教程
- android自定义弹窗PopupWindow
- Android:PopupWindow简单弹窗
- Android开发之PopupWindow
- Android之PopupWindow
- android之PopupWindow
- android控件之popupWindow
- Android之动画PopupWindow
- android之PopupWindow
- Android开发之PopupWindow
- android组件之PopupWindow
- android学习之popupWindow
- Android开发之PopupWindow
- windows 下配置php+Nginx
- 初识MST
- 判断vector<int> 和list<int>容器是否完全相同
- c#中接口和类的异同
- Linux环境进程间通信
- android之弹窗popupWindow
- spring中使用jdbc
- Git常用命令解说
- spring+jdbc
- ObjC 线程同步加锁[转]
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
- Java设计模式---单例模式(双锁机制的弊端)
- 敬业是一种态度
- 发现身边感动,寻找最美龙江测绘人