11.webview、shareSDK
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/title_red_bg" ><ImageButtonandroid:id="@+id/btn_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="5dp"android:background="@null"android:src="@drawable/back" /><ImageButtonandroid:id="@+id/btn_share"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="5dp"android:background="@null"android:src="@drawable/icon_share" /><ImageButtonandroid:id="@+id/btn_size"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginRight="5dp"android:layout_toLeftOf="@id/btn_share"android:background="@null"android:src="@drawable/icon_textsize" /></RelativeLayout><FrameLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" ><WebViewandroid:id="@+id/wv_web"android:layout_width="match_parent"android:layout_height="match_parent" /><ProgressBarandroid:id="@+id/pb_progress"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:indeterminateDrawable="@drawable/custom_progress" /></FrameLayout></LinearLayout>
public class NewsDetailActivity extends Activity implements OnClickListener {private WebView mWebView;private ImageButton btnBack;//后退按钮private ImageButton btnSize;//设置网页文本大小private ImageButton btnShare;//分享private ProgressBar pbProgress;//一进去没加载出内容的进度圈@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_news_detail);mWebView = (WebView) findViewById(R.id.wv_web);btnBack = (ImageButton) findViewById(R.id.btn_back);btnSize = (ImageButton) findViewById(R.id.btn_size);btnShare = (ImageButton) findViewById(R.id.btn_share);btnBack.setOnClickListener(this);btnSize.setOnClickListener(this);btnShare.setOnClickListener(this);pbProgress = (ProgressBar) findViewById(R.id.pb_progress);String url = getIntent().getStringExtra("url");WebSettings settings = mWebView.getSettings();//获取设置对象settings.setJavaScriptEnabled(true);// 表示支持js,即网页的阅读全文settings.setBuiltInZoomControls(true);// 显示放大缩小按钮settings.setUseWideViewPort(true);// 支持双击缩放mWebView.setWebViewClient(new WebViewClient() {/*** 网页开始加载*/@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);System.out.println("网页开始加载");pbProgress.setVisibility(View.VISIBLE);}/*** 网页加载结束*/@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);System.out.println("网页开始结束");pbProgress.setVisibility(View.GONE);}/*** 所有跳转的链接都会在此方法中回调*/@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {// tel:110,在这里可以获取连接,可以做很多操作,比如获取了110,我们可以打电话,获取的URL和我们黄网数据库匹配了,可以拦截等System.out.println("跳转url:" + url);view.loadUrl(url);//自己的应用中打开网页,不会调到系统浏览器了return true;// return super.shouldOverrideUrlLoading(view, url);}});// mWebView.goBack()//比如弄个上一页下一页的按钮执行这个方法mWebView.setWebChromeClient(new WebChromeClient() {/*** 进度发生变化*/@Overridepublic void onProgressChanged(WebView view, int newProgress) {System.out.println("加载进度:" + newProgress);super.onProgressChanged(view, newProgress);}/*** 获取网页标题*/@Overridepublic void onReceivedTitle(WebView view, String title) {System.out.println("网页标题:" + title);//可以显示在顶部的textview上super.onReceivedTitle(view, title);}});mWebView.loadUrl(url);// 默认加载网页,可以随便写}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_back:finish();//销毁activity,即显示出了上一个页面break;case R.id.btn_size:showChooseDialog();break;case R.id.btn_share:showShare();break;default:break;}}private int mCurrentChooseItem;// 记录当前选中的item, 点击确定前private int mCurrentItem = 2;// 记录当前选中的item, 点击确定后,默认是标准字体,有个问题:在进来又变回了标准,可以保存起来/*** 显示选择对话框*/private void showChooseDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);String[] items = new String[] { "超大号字体", "大号字体", "正常字体", "小号字体","超小号字体" };builder.setTitle("字体设置");builder.setSingleChoiceItems(items, mCurrentItem,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("选中:" + which);mCurrentChooseItem = which;}});builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {WebSettings settings = mWebView.getSettings();switch (mCurrentChooseItem) {case 0:settings.setTextSize(TextSize.LARGEST);break;case 1:settings.setTextSize(TextSize.LARGER);break;case 2:settings.setTextSize(TextSize.NORMAL);break;case 3:settings.setTextSize(TextSize.SMALLER);break;case 4:settings.setTextSize(TextSize.SMALLEST);break;default:break;}mCurrentItem = mCurrentChooseItem;}});builder.setNegativeButton("取消", null);builder.show();}/*** 分享, 注意在sdcard根目录放test.jpg,就是这个天气图片*/private void showShare() {ShareSDK.initSDK(this);OnekeyShare oks = new OnekeyShare();oks.setTheme(OnekeyShareTheme.SKYBLUE);//设置天蓝色的主题// 关闭sso授权oks.disableSSOWhenAuthorize();// 分享时Notification的图标和文字,不知道为什么这报错,还是不能写字oks.setNotification(R.drawable.ic_launcher,getString(R.string.app_name));// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用oks.setTitle(getString(R.string.share));// titleUrl是标题的网络链接,仅在人人网和QQ空间使用oks.setTitleUrl("http://sharesdk.cn");// text是分享文本,所有平台都需要这个字段oks.setText("我是分享文本");// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数oks.setImagePath("/sdcard/test.jpg");// 确保SDcard下面存在此张图片// url仅在微信(包括好友和朋友圈)中使用oks.setUrl("http://sharesdk.cn");// comment是我对这条分享的评论,仅在人人网和QQ空间使用oks.setComment("我是测试评论文本");// site是分享此内容的网站名称,仅在QQ空间使用oks.setSite(getString(R.string.app_name));// siteUrl是分享此内容的网站地址,仅在QQ空间使用oks.setSiteUrl("http://sharesdk.cn");// 启动分享GUIoks.show(this);}}
- 导入的时候遇到了错误,我把工作空间改了成utf-8,但是有一个文件还是报错,于是把例子程序的这个文件拷进来就好了。后来发现运行的程序里的文字是乱码,后来找到了原因,因为我的工作空间默认是GBK,没有修改,所以改成utf-8不识别了。而人家的sdk却是u8。可以单击报错的文件单个修改。以后建工作空间的时候首先要改编码
- 审核一般是2-3天或者一个礼拜
<ShareSDKAppKey = "62aa650a6c53"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"--><!-- ShareByAppClient标识是否使用微博客户端分享,默认是false --><SinaWeiboId="1"SortId="1"AppKey="568898243"//每个应用都需要审核这个APIkey,能写来自。。。。AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"RedirectUrl="http://www.sharesdk.cn"ShareByAppClient="false"Enable="true" />
11.webview、shareSDK的更多相关文章
- JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry
JSON 之 SuperObject(11): TSuperTableString.TSuperAvlEntry - 万一 - 博客园http://www.cnblogs.com/del/archiv ...
- MVC5 + EF6 + Bootstrap3 (11) 排序、搜索、分页
系列教程:MVC5 + EF6 + Bootstrap3 上一节:MVC5 + EF6 + Bootstrap3 (10) 数据查询页面 源码下载:点我下载 我工作的源码:http://www.jin ...
- JavaScript学习总结【11】、JS 运动
动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...
- c++11 NULL、0、nullptr
C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #de ...
- python学习之路-11 多线程、多进程、协程
python内置队列模块 queue queue的四种队列 q = queue.Queue() # 先进先出队列 q = queue.LifoQueue() # 后进先出队列 q = queue.Pr ...
- c++11并行、并发与多线程编程
首先,我们先理解并发和并行的区别. 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行. 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并 ...
- [c/c++] programming之路(11)、顺序分支
一.模块化设计 #include<stdio.h> #include<stdlib.h> #include<windows.h> void openbaidu(){ ...
- python学习笔记11 ----线程、进程、协程
进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...
- 11.1、Libgdx的音频之音效
(官网:www.libgdx.cn) 音效通常是比较小的音频文件,通常是几秒钟的长度.通常用在特定的游戏事件中,比如跳跃或者射击. 音效可以保存为多种格式.Libgdx支持MP3.OGG和WAV文件. ...
随机推荐
- Java 字符串拼接5种方式性能比较
https://www.cnblogs.com/twzheng/p/5923642.html
- 项目(五)jumpserver企业开源跳板机搭建
跳板机是什么?跳板机是运维堡垒主机的另个称呼.作为技术或者运维人员应该不会陌生.企业为了服务器的安全,通常所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理. 接下来,我来讲述一下 ...
- Swagger注解
swagger注解说明 1.与模型相关的注解,用在bean上面 @ApiModel:用在bean上,对模型类做注释: @ApiModelProperty:用在属性上,对属性做注释 2.与接口相关的注 ...
- 37 【kubernetes】搭建dashboard
官方的操作步骤是:https://github.com/kubernetes/dashboard 我自己的步骤是: 1,下载yaml文件 wget https://raw.githubusercont ...
- 694. Number of Distinct Islands 形状不同的岛屿数量
[抄题]: Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land ...
- 725. Split Linked List in Parts把链表分成长度不超过1的若干部分
[抄题]: Given a (singly) linked list with head node root, write a function to split the linked list in ...
- Android 发送邮件以及定时发送邮件的实现
本文以腾讯企业邮箱为例,展示如何发送邮件 及相关问题 选择腾讯企业邮箱是因为腾讯企业邮箱一般都是开启了smtp服务 项目地址:https://gitee.com/bimingcong/MySendE ...
- Linux查看某个进程的线程
线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...
- 20172306《Java程序设计与数据结构》第一周总结
20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...
- [Hadoop]Hadoop章1 Hadoop原理解析
Hadoop是Apache软件基金会所开发的并行计算框架与分布式文件系统.最核心的模块包括Hadoop Common.HDFS与MapReduce. HDFS HDFS是Hadoop分布式文件系统(H ...
