`
huiji232
  • 浏览: 11888 次
社区版块
存档分类
最新评论

WebView PopWindow Demo

阅读更多
package com.example.testpop;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.PopupWindow;
import android.widget.Toast;
//主页面放一个WebView
//ActionBar 上面一个menu,点击menu弹出PopWindow 
//PopWindow上面放GridView布局,ItemClick监听器,
//判断点击的item ID执行不同方法 reload(),goback(),goforward()

public class MainActivity extends Activity implements OnItemClickListener,
		OnMenuItemClickListener {
	private PopupWindow mPopupWindow;
	private View mViewiewMain;
	private WebView mWebView;
	private MenuItem mMenuItem;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mViewiewMain = getLayoutInflater()
				.inflate(R.layout.activity_main, null);
		// button = (Button) findViewById(R.id.button1);
		mWebView = (WebView) findViewById(R.id.webView1);
		mWebView.loadUrl("http://3gqq.qq.com/");
		// WebView重定向
		mWebView.setWebViewClient(new WebViewClient() {
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}
		});
		mPopupWindow = new PopupWindow(this);
		// DisplayMetrics outMetrics = new DisplayMetrics();
		// getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
		// popupWindow.setWidth(outMetrics.widthPixels / 5 * 3);
		// popupWindow.setHeight(outMetrics.heightPixels / 5 * 3);

		// 代码设置PopWindow的宽和高
		mPopupWindow.setWidth(LayoutParams.MATCH_PARENT);
		mPopupWindow.setHeight(LayoutParams.WRAP_CONTENT);
		// PopWindow的布局
		View view = getLayoutInflater().inflate(R.layout.window, null);
		GridView gridView = (GridView) view.findViewById(R.id.gridView1);
		gridView.setAdapter(new GridViewAdapter(this));
		gridView.setOnItemClickListener(this);
		mPopupWindow.setContentView(view);
		// mPopupWindow 获取焦点
		mPopupWindow.setFocusable(true);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		// 找到菜单Menu并设置监听器
		mMenuItem = menu.findItem(R.id.action_menu1);
		mMenuItem.setOnMenuItemClickListener(this);
		return true;

	}

	//
	// public void btn(View v) {
	// mPopupWindow.showAtLocation(mViewiewMain, Gravity.BOTTOM, 10, 0);
	// }

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		// Toast.makeText(this, position + "", Toast.LENGTH_SHORT).show();
		switch (position) {
		case 0:
			// 刷新
			mWebView.reload();
			mPopupWindow.dismiss();
			break;
		case 1:
			// 后退
			if (mWebView.canGoBack()) {
				mWebView.goBack();
			} else {
				Toast.makeText(this, "不能退了!!!", Toast.LENGTH_SHORT).show();
			}
			mPopupWindow.dismiss();
			break;
		case 2:
			// 前进
			if (mWebView.canGoForward()) {
				mWebView.goForward();
			} else {
				Toast.makeText(this, "不能进了!!!", Toast.LENGTH_SHORT).show();
			}
			mPopupWindow.dismiss();
			break;
		}
	}

	@Override
	public boolean onMenuItemClick(MenuItem item) {
		switch (item.getItemId()) {
		// 显示PopWindow
		// showAtLocation
		case R.id.action_menu1:
			mPopupWindow.showAtLocation(mWebView, Gravity.BOTTOM, 0, 0);
			break;

		}
		return false;
	}
}

引用
GridView的适配器:

package com.example.testpop;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class GridViewAdapter extends BaseAdapter {
	private Context context;
	private Integer[] images = { R.drawable.card_refresh, R.drawable.back,
			R.drawable.forward };

	public GridViewAdapter(Context context) {
		super();
		this.context = context;
	}

	@Override
	public int getCount() {
		return images.length;
	}

	@Override
	public Object getItem(int position) {
		return position;
	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imageView;
		if (convertView == null) {
			imageView = new ImageView(context);
			imageView.setPadding(8, 8, 8, 8);
			imageView.setLayoutParams(new GridView.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

		} else {
			imageView = (ImageView) convertView;
		}
		imageView.setImageResource(images[position]);
		return imageView;
	}
}
分享到:
评论

相关推荐

    WebView_demo

    【WebView_demo】是一个针对Android平台的开发示例项目,它主要展示了如何利用WebView组件来加载并显示网页内容。WebView是Android SDK提供的一种原生控件,允许开发者在应用程序内部嵌入一个可浏览网页的组件,使得...

    Android之WebView使用Demo

    **Android之WebView使用Demo** 在Android开发中,`WebView`是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,极大地扩展了Android应用的功能。本教程将详细讲解如何在Android应用中使用`WebView...

    Android混合开发之webview的demo

    本示例"Android混合开发之webview的demo"将带你深入理解WebView的基本用法,特别是如何实现Android按钮与JavaScript之间的互相响应。 一、WebView的基本使用 1. 添加依赖:在AndroidManifest.xml文件中,确保...

    WebView示例DEMO

    这个"WebView示例DEMO"是为了帮助开发者,尤其是新手,理解并掌握如何在Android应用中集成和使用WebView来展示网页。在这个DEMO中,你可以看到如何实现一些基本功能,如加载URL、与网页交互以及设置WebView的一些...

    WebView_Demo

    【WebView_Demo】是一个以Android平台上的WebView组件为主题的示例项目。在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用内嵌入网页内容,实现与网页的交互,无需离开应用程序就能浏览网页或者...

    自定义WebView简单demo

    【自定义WebView简单demo】是Android开发中的一个常见实践,主要目标是提升用户体验并实现特定功能。在这个项目中,我们自定义了一个WebView组件,它包含了三个核心特性:进度条显示、在同一WebView中处理多个链接...

    Android-WebSocket-WebView_DEMO_websocket_androidwebview_

    在本DEMO中,"Android-WebSocket-WebView"着重展示了如何在Android应用中集成WebSocket功能,并利用WebView加载网页,实现客户端与服务器的实时交互。这个项目对于理解WebSocket与Android WebView的结合使用具有重要...

    android webview实用demo

    在Android开发中,Webview是一个非常重要的组件,它允许开发者在原生应用中嵌入网页内容,实现网页与原生应用的交互。本教程将详细讲解如何创建一个实用的Android Webview,包括去除系统自带标题栏,自定义进度条,...

    WebView简单使用Demo

    WebView简单使用Demo通常会展示如何在Android应用中加载和展示一个网页,以及一些基本的交互功能。接下来,我们将深入探讨WebView的相关知识点。 1. **WebView的基本使用** - 首先,在布局文件(如`activity_main....

    android java和webview交互demo

    这篇资源文章“android java和webview交互demo”详细介绍了如何在Java驱动的Android应用中使用WebView,并通过JavaScript接口进行数据交换。 **一、WebView基本使用** 1. **添加依赖** 在AndroidManifest.xml中,...

    Android中webview使用x5内核集成demo

    Android x5内核集成demo 解决webview在使用内核时跟h5混合调用时出现的白屏,加载缓慢,vue报错各种兼容问题。在x5内核加载失败时,会切换成系统本身的内核来加载h5内容。如果项目上架Google商店等海外市场运营的,...

    鸿蒙javaUI-webview-demo.rar

    "鸿蒙javaUI-webview-demo.rar"这个压缩包就是一个关于如何在鸿蒙平台上使用WebView进行远程连接并实现JavaScript交互的示例项目。下面我们将详细探讨相关的知识点。 1. **鸿蒙SDK**: 鸿蒙SDK是华为推出的用于...

    webview学习demo

    "webview学习demo"是一个专为iOS开发者设计的学习资源,它涵盖了如何在iOS应用中使用WebView以及如何实现iOS与JavaScript之间的双向通信。这个示例项目经过测试,可以免费直接运行,对于理解WebView的使用具有很高的...

    webView的demo.7z

    这个"webView的demo.7z"压缩包文件显然包含了关于如何在Android中使用WebView进行混合开发的一个示例项目,其中包括了二维码扫描功能和悬浮球的集成。接下来,我们将深入探讨WebView的核心概念、配置与使用方法,...

    简单的webview demo 带下载功能

    这个“简单的webview demo 带下载功能”是一个基础的示例项目,帮助开发者理解如何在WebView中集成下载功能。下面将详细解释相关知识点。 1. **WebView组件**: WebView是Android SDK中的一个类,它继承自View,...

    Webview简单使用Demo

    本教程将详细讲解Webview的使用方法,并通过一个简单的Demo来帮助理解其核心功能。 1. **Webview的引入与设置** 在AndroidManifest.xml中,我们需要为应用添加Internet权限,因为Webview需要访问网络资源: ```...

    WebView的demo

    【WebView的深度解析与应用】 WebView是Android系统中一个非常重要的组件,它允许开发者在应用程序内嵌入网页浏览功能,用户无需离开应用就能查看和交互网络内容。在Android开发中,WebView的应用场景广泛,比如...

    webview-demo

    webview-demo

    android webview demo

    `android webview demo` 是一个示例项目,旨在帮助开发者理解如何有效地使用WebView进行网页交互。下面将详细介绍WebView的主要功能、配置步骤以及一些关键知识点。 **1. WebView的基本功能** - **加载网页**:...

    QtWebView在线加载网页Demo

    **QtWebView在线加载网页Demo详解** QtWebView是Qt框架中用于显示HTML内容的模块,它为开发者提供了一种在Qt应用程序中嵌入Web内容的能力。这个"QtWebView在线加载网页Demo"是一个很好的学习实例,特别适合那些希望...

Global site tag (gtag.js) - Google Analytics