仿iReader-按menu键弹出PopupWindow布局界面
package com.lectek.android.read.ui;
import com.lectek.android.read.adapter.GridViewAdapter;
import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;
/**
* 显示PopupWindow
* @author zlf
*更新时间:2012-3-13
*/
public class ReadPopupWindowActivity extends Activity {
private PopupWindow popupWindow;
private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//全屏显示
//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
//WindowManager.LayoutParams.FLAG_FULLSCREEN);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
/**
* 按返回键的相关处理
*/
@Override
public void onBackPressed() {
if(popupWindow.isShowing()){
popupWindow.dismiss();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
initPopupWindow();
return true;
}
/**
* 弹出PopupWindow
*/
public void initPopupWindow(){
//加载PopupWindow的布局文件
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.popup, null);
//加载PopupWindow的媒介布局文件
View parentView = layoutInflater.inflate(R.layout.main, null);
//实例化PopupWindow中的组件
TextView titleTextView = (TextView)view.findViewById(R.id.popup_title);
ImageView editImg = (ImageView)view.findViewById(R.id.popup_edit);
ImageView listenImg = (ImageView)view.findViewById(R.id.popup_listen);
SeekBar seekBar = (SeekBar)view.findViewById(R.id.popup_progress);
TextView progressTextView = (TextView)view.findViewById(R.id.popup_progress_tv);
GridView gridView = (GridView)view.findViewById(R.id.popup_grid);
GridViewAdapter adapter = new GridViewAdapter(this, mPictures, mTitles);
gridView.setAdapter(adapter);
//声明并实例化PopupWindow
popupWindow = new PopupWindow(view, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
//为PopupWindow设置弹出的位置
//popupWindow.showAsDropDown(parentView);
popupWindow.showAtLocation(parentView, Gravity.TOP, 0, 0);
}
/**
* 图片资源
*/
private int[] mPictures = {R.drawable.v, R.drawable.p, R.drawable.v,
R.drawable.p, R.drawable.v, R.drawable.p, R.drawable.v, R.drawable.p,};
/**
* 文字资源
*/
private String[] mTitles = {"目录、书签", "字体大小", "亮度调节", "阅读背景",
"赠送", "评论", "分享", "更多设置"};
}
package com.lectek.android.read.adapter;
import com.lectek.android.read.ui.R;
import android.content.ContentValues;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
/**
* GridView的适配器
* @author zlf
*更新时间2012-3-13
*/
public class GridViewAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
private int[] mPictures;
private String[] mTitles;
public GridViewAdapter(Context context, int[] pictures, String[] titles){
this.mContext = context;
this.mPictures = pictures;
this.mTitles = titles;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return mPictures.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
int picture = mPictures[position];
String title = mTitles[position];
if(convertView == null){
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.grid, null);
viewHolder.imageView = (ImageView)convertView.findViewById(R.id.grid_img);
viewHolder.textView = (TextView)convertView.findViewById(R.id.grid_tv);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.imageView.setBackgroundResource(picture);
viewHolder.textView.setText(title);
return convertView;
}
private final class ViewHolder{
public ImageView imageView;
public TextView textView;
}
}
popup.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" >
<LinearLayout
android:id="@+id/popup_title_layout"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="2"
android:orientation="horizontal"
android:background="#e0000000">
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/popup_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="4"
android:text="@string/main_title_word_tv"/>
<ImageView
android:id="@+id/popup_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/add"
android:layout_weight="1"/>
<ImageView
android:id="@+id/popup_listen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/listen"/>
</LinearLayout>
<LinearLayout
android:id="@+id/popup_content_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="8"
android:background="#00000000">
<TextView
android:id="@+id/popup_content"
android:layout_width="fill_parent"
android:layout_height="360dip"/>
</LinearLayout>
<LinearLayout
android:id="@+id/popup_bottom"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:orientation="vertical"
android:background="#e0000000"
android:layout_weight="6">
<LinearLayout
android:id="@+id/popup_progress_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:orientation="horizontal"
android:layout_weight="4">
<SeekBar
android:id="@+id/popup_progress"
android:layout_width="7dip"
android:layout_height="18dip"
android:layout_marginLeft="10dip"
android:layout_weight="2"
android:progressDrawable="@drawable/seekbar_style"
android:max="100"
android:progress="30"/>
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/popup_progress_tv"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/popup_progress_page"/>
</LinearLayout>
<GridView
android:id="@+id/popup_grid"
android:layout_width="fill_parent"
android:layout_height="100dip"
android:gravity="center"
android:numColumns="4"
android:layout_weight="4"></GridView>
</LinearLayout>
</LinearLayout>
grid.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"
android:background="@drawable/grid_shape">
<ImageView
android:id="@+id/grid_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/v"/>
<TextView
android:id="@+id/grid_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="目录、书签"
android:layout_gravity="center"
android:textSize="12dip"/>
</LinearLayout>