布局:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:orientation="vertical" >
  5. <RelativeLayout
  6. android:layout_width="match_parent"
  7. android:layout_height="wrap_content"
  8. android:background="@drawable/title_red_bg" >
  9. <ImageButton
  10. android:id="@+id/btn_back"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:layout_centerVertical="true"
  14. android:layout_marginLeft="5dp"
  15. android:background="@null"
  16. android:src="@drawable/back" />
  17. <ImageButton
  18. android:id="@+id/btn_share"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_alignParentRight="true"
  22. android:layout_centerVertical="true"
  23. android:layout_marginRight="5dp"
  24. android:background="@null"
  25. android:src="@drawable/icon_share" />
  26. <ImageButton
  27. android:id="@+id/btn_size"
  28. android:layout_width="wrap_content"
  29. android:layout_height="wrap_content"
  30. android:layout_centerVertical="true"
  31. android:layout_marginRight="5dp"
  32. android:layout_toLeftOf="@id/btn_share"
  33. android:background="@null"
  34. android:src="@drawable/icon_textsize" />
  35. </RelativeLayout>
  36. <FrameLayout
  37. android:layout_width="match_parent"
  38. android:layout_height="0dp"
  39. android:layout_weight="1" >
  40. <WebView
  41. android:id="@+id/wv_web"
  42. android:layout_width="match_parent"
  43. android:layout_height="match_parent" />
  44. <ProgressBar
  45. android:id="@+id/pb_progress"
  46. android:layout_width="wrap_content"
  47. android:layout_height="wrap_content"
  48. android:layout_gravity="center"
  49. android:indeterminateDrawable="@drawable/custom_progress" />
  50. </FrameLayout>
  51. </LinearLayout>

2.新闻详情页
  1. public class NewsDetailActivity extends Activity implements OnClickListener {
  2. private WebView mWebView;
  3. private ImageButton btnBack;//后退按钮
  4. private ImageButton btnSize;//设置网页文本大小
  5. private ImageButton btnShare;//分享
  6. private ProgressBar pbProgress;//一进去没加载出内容的进度圈
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. requestWindowFeature(Window.FEATURE_NO_TITLE);
  11. setContentView(R.layout.activity_news_detail);
  12. mWebView = (WebView) findViewById(R.id.wv_web);
  13. btnBack = (ImageButton) findViewById(R.id.btn_back);
  14. btnSize = (ImageButton) findViewById(R.id.btn_size);
  15. btnShare = (ImageButton) findViewById(R.id.btn_share);
  16. btnBack.setOnClickListener(this);
  17. btnSize.setOnClickListener(this);
  18. btnShare.setOnClickListener(this);
  19. pbProgress = (ProgressBar) findViewById(R.id.pb_progress);
  20. String url = getIntent().getStringExtra("url");
  21. WebSettings settings = mWebView.getSettings();//获取设置对象
  22. settings.setJavaScriptEnabled(true);// 表示支持js,即网页的阅读全文
  23. settings.setBuiltInZoomControls(true);// 显示放大缩小按钮
  24. settings.setUseWideViewPort(true);// 支持双击缩放
  25. mWebView.setWebViewClient(new WebViewClient() {
  26. /**
  27. * 网页开始加载
  28. */
  29. @Override
  30. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  31. super.onPageStarted(view, url, favicon);
  32. System.out.println("网页开始加载");
  33. pbProgress.setVisibility(View.VISIBLE);
  34. }
  35. /**
  36. * 网页加载结束
  37. */
  38. @Override
  39. public void onPageFinished(WebView view, String url) {
  40. super.onPageFinished(view, url);
  41. System.out.println("网页开始结束");
  42. pbProgress.setVisibility(View.GONE);
  43. }
  44. /**
  45. * 所有跳转的链接都会在此方法中回调
  46. */
  47. @Override
  48. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  49. // tel:110,在这里可以获取连接,可以做很多操作,比如获取了110,我们可以打电话,获取的URL和我们黄网数据库匹配了,可以拦截等
  50. System.out.println("跳转url:" + url);
  51. view.loadUrl(url);//自己的应用中打开网页,不会调到系统浏览器了
  52. return true;
  53. // return super.shouldOverrideUrlLoading(view, url);
  54. }
  55. });
  56. // mWebView.goBack()//比如弄个上一页下一页的按钮执行这个方法
  57. mWebView.setWebChromeClient(new WebChromeClient() {
  58. /**
  59. * 进度发生变化
  60. */
  61. @Override
  62. public void onProgressChanged(WebView view, int newProgress) {
  63. System.out.println("加载进度:" + newProgress);
  64. super.onProgressChanged(view, newProgress);
  65. }
  66. /**
  67. * 获取网页标题
  68. */
  69. @Override
  70. public void onReceivedTitle(WebView view, String title) {
  71. System.out.println("网页标题:" + title);//可以显示在顶部的textview上
  72. super.onReceivedTitle(view, title);
  73. }
  74. });
  75. mWebView.loadUrl(url);// 默认加载网页,可以随便写
  76. }
  77. @Override
  78. public void onClick(View v) {
  79. switch (v.getId()) {
  80. case R.id.btn_back:
  81. finish();//销毁activity,即显示出了上一个页面
  82. break;
  83. case R.id.btn_size:
  84. showChooseDialog();
  85. break;
  86. case R.id.btn_share:
  87. showShare();
  88. break;
  89. default:
  90. break;
  91. }
  92. }
  93. private int mCurrentChooseItem;// 记录当前选中的item, 点击确定前
  94. private int mCurrentItem = 2;// 记录当前选中的item, 点击确定后,默认是标准字体,有个问题:在进来又变回了标准,可以保存起来
  95. /**
  96. * 显示选择对话框
  97. */
  98. private void showChooseDialog() {
  99. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  100. String[] items = new String[] { "超大号字体", "大号字体", "正常字体", "小号字体",
  101. "超小号字体" };
  102. builder.setTitle("字体设置");
  103. builder.setSingleChoiceItems(items, mCurrentItem,
  104. new DialogInterface.OnClickListener() {
  105. @Override
  106. public void onClick(DialogInterface dialog, int which) {
  107. System.out.println("选中:" + which);
  108. mCurrentChooseItem = which;
  109. }
  110. });
  111. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  112. @Override
  113. public void onClick(DialogInterface dialog, int which) {
  114. WebSettings settings = mWebView.getSettings();
  115. switch (mCurrentChooseItem) {
  116. case 0:
  117. settings.setTextSize(TextSize.LARGEST);
  118. break;
  119. case 1:
  120. settings.setTextSize(TextSize.LARGER);
  121. break;
  122. case 2:
  123. settings.setTextSize(TextSize.NORMAL);
  124. break;
  125. case 3:
  126. settings.setTextSize(TextSize.SMALLER);
  127. break;
  128. case 4:
  129. settings.setTextSize(TextSize.SMALLEST);
  130. break;
  131. default:
  132. break;
  133. }
  134. mCurrentItem = mCurrentChooseItem;
  135. }
  136. });
  137. builder.setNegativeButton("取消", null);
  138. builder.show();
  139. }
  140. /**
  141. * 分享, 注意在sdcard根目录放test.jpg,就是这个天气图片
  142. */
  143. private void showShare() {
  144. ShareSDK.initSDK(this);
  145. OnekeyShare oks = new OnekeyShare();
  146. oks.setTheme(OnekeyShareTheme.SKYBLUE);//设置天蓝色的主题
  147. // 关闭sso授权
  148. oks.disableSSOWhenAuthorize();
  149. // 分享时Notification的图标和文字,不知道为什么这报错,还是不能写字
  150. oks.setNotification(R.drawable.ic_launcher,
  151. getString(R.string.app_name));
  152. // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
  153. oks.setTitle(getString(R.string.share));
  154. // titleUrl是标题的网络链接,仅在人人网和QQ空间使用
  155. oks.setTitleUrl("http://sharesdk.cn");
  156. // text是分享文本,所有平台都需要这个字段
  157. oks.setText("我是分享文本");
  158. // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
  159. oks.setImagePath("/sdcard/test.jpg");// 确保SDcard下面存在此张图片
  160. // url仅在微信(包括好友和朋友圈)中使用
  161. oks.setUrl("http://sharesdk.cn");
  162. // comment是我对这条分享的评论,仅在人人网和QQ空间使用
  163. oks.setComment("我是测试评论文本");
  164. // site是分享此内容的网站名称,仅在QQ空间使用
  165. oks.setSite(getString(R.string.app_name));
  166. // siteUrl是分享此内容的网站地址,仅在QQ空间使用
  167. oks.setSiteUrl("http://sharesdk.cn");
  168. // 启动分享GUI
  169. oks.show(this);
  170. }
  171. }
  • 导入的时候遇到了错误,我把工作空间改了成utf-8,但是有一个文件还是报错,于是把例子程序的这个文件拷进来就好了。后来发现运行的程序里的文字是乱码,后来找到了原因,因为我的工作空间默认是GBK,没有修改,所以改成utf-8不识别了。而人家的sdk却是u8。可以单击报错的文件单个修改。以后建工作空间的时候首先要改编码
  • 审核一般是2-3天或者一个礼拜
  1. <ShareSDK
  2. AppKey = "62aa650a6c53"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"-->
  3. <!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
  4. <SinaWeibo
  5. Id="1"
  6. SortId="1"
  7. AppKey="568898243"//每个应用都需要审核这个APIkey,能写来自。。。。
  8. AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
  9. RedirectUrl="http://www.sharesdk.cn"
  10. ShareByAppClient="false"
  11. Enable="true" />






11.webview、shareSDK的更多相关文章

  1. JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry

    JSON 之 SuperObject(11): TSuperTableString.TSuperAvlEntry - 万一 - 博客园http://www.cnblogs.com/del/archiv ...

  2. MVC5 + EF6 + Bootstrap3 (11) 排序、搜索、分页

    系列教程:MVC5 + EF6 + Bootstrap3 上一节:MVC5 + EF6 + Bootstrap3 (10) 数据查询页面 源码下载:点我下载 我工作的源码:http://www.jin ...

  3. JavaScript学习总结【11】、JS 运动

    动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...

  4. c++11 NULL、0、nullptr

      C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #de ...

  5. python学习之路-11 多线程、多进程、协程

    python内置队列模块 queue queue的四种队列 q = queue.Queue() # 先进先出队列 q = queue.LifoQueue() # 后进先出队列 q = queue.Pr ...

  6. c++11并行、并发与多线程编程

    首先,我们先理解并发和并行的区别. 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行. 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并 ...

  7. [c/c++] programming之路(11)、顺序分支

    一.模块化设计 #include<stdio.h> #include<stdlib.h> #include<windows.h> void openbaidu(){ ...

  8. python学习笔记11 ----线程、进程、协程

    进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...

  9. 11.1、Libgdx的音频之音效

    (官网:www.libgdx.cn) 音效通常是比较小的音频文件,通常是几秒钟的长度.通常用在特定的游戏事件中,比如跳跃或者射击. 音效可以保存为多种格式.Libgdx支持MP3.OGG和WAV文件. ...

随机推荐

  1. linux 杀死进程kill 等用法

    kill -9 $(ps -ef | grep process_name | grep -v grep | awk  '{print $2}')   稍微解释一下:  awk  '{print $2} ...

  2. Django_models下划线__正反查询,对象正反查询

    1.我们使用models对数据库进行查询的时候,想去拿到结果的时候有时直接使用".字段",有时是'[0].字段',区别就是我们使用的语句返回的到底是一个对象还是列表: obj=mo ...

  3. centos系统有多个内核,修改默认启动内核

    打开系统文件 vim  /boot/grub/grub.conf default=0,意思是GRUB在默认情况下,也就是用户没有选择的情况下,去启动显示在用户界面的第一个系统:GRUB启动系统时是从0 ...

  4. AI大道理头尾标识

    标题 点击上方“AI大道理”,选择“置顶”公众号 重磅干货,深入讲解AI大道理 —————— 正文 —————— 浅谈则止,深入理解AI大道理 扫描下方“AI大道理”,选择“关注”公众号 欢迎加入!

  5. 小强学渲染之OpenGL的GPU管线

    GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段.GPU管线涵盖了渲染流程的 几何阶段 和 光栅化阶段,但对开发者而言,只有对顶点和片段着色器有可编程控制权,其他 ...

  6. Android Studio修改项目中整体包名

    莫名的需求,要把之前的apk分成三个不同的apk,还要在应用市场能够上线,麻麻滴这样一听那还不要各个apk包的包名不同以及apk签名文件也不同嘛(签名文件一般也用不同,为防止上线冲突嘛).所以就亲自尝 ...

  7. 【测试工具】Macaca 自动遍历器 NoSmoke

    Macaca 提供的基础能力上研发出了一套多端深度遍历爬虫工具. 希望可以最大化减少UI 测试脚本的编写涵盖以下功能点: 支持iOS, Android,PC-Web 三个平台的自动化测试 同时可以通过 ...

  8. 网页屏蔽f12、右键菜单等操作

    1.屏蔽f12 document.onkeydown = function(){ if(window.event && window.event.keyCode == 123) { a ...

  9. 一 分析easyswoole源码(启动服务)

    分析easyswoole源码 1以启动为例 //检查是否已经安装 installCheck();//检查锁文件是否存在,不存在结束 //启动服务 serverStart showLogo();//显示 ...

  10. 跑python用ThinkPad好还是MacBook好?

    跑Python,那肯定是服务器操作系统最好,找个方便安装Linux的本子. 我想题主的意图应该是做Python开发吧,如果是Python开发,还要看一下开发方向,如果是网络爬虫.服务器后端编程类的,那 ...