请问大家用过uc浏览器,他收藏一个网页是怎么操作的?

是不是这样,按菜单键——弹出添加网页,收藏网页等等的菜单操作,这个菜单操作很人性化了,并且在前面的篇幅已经说过了,这里不做太多的赘述了。

我这里只说一说添加书签这个页面怎么的实现了。

这个添加书签的页面布局文件如下所示:

由布局文件,我们可以推断出,一定是你点击了添加书签的以后,再将其网址名称,和网址保存到文本框,让用户得以编辑,进一步提升用户体验,是这样的吗?

丑媳妇总要见公婆,是亮代码,解开谜底的时候了,源代码如下:

/**
* Add / Edit bookmark activity.
*/
public class EditBookmarkActivity extends Activity {
/**
* mTitleEditText 名字文本框
* mUrlEditText URL文本框
* mOkButton 确定按钮
* mCancelButton 取消按钮
*/
private EditText mTitleEditText;
private EditText mUrlEditText; private Button mOkButton;
private Button mCancelButton; private long mRowId = -1; /**
* 数据初始化的过程
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); Window w = getWindow();
w.requestFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.edit_bookmark_activity); w.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_input_add); mTitleEditText = (EditText) findViewById(R.id.EditBookmarkActivity_TitleValue);
mUrlEditText = (EditText) findViewById(R.id.EditBookmarkActivity_UrlValue); mOkButton = (Button) findViewById(R.id.EditBookmarkActivity_BtnOk);
mCancelButton = (Button) findViewById(R.id.EditBookmarkActivity_BtnCancel); mOkButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setAsBookmark();
setResult(RESULT_OK);
finish();
}
}); mCancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResult(RESULT_CANCELED);
finish();
}
}); Bundle extras = getIntent().getExtras();
if (extras != null) { String title = extras.getString(Constants.EXTRA_ID_BOOKMARK_TITLE);
if ((title != null) &&
(title.length() > 0)) {
mTitleEditText.setText(title);
} String url = extras.getString(Constants.EXTRA_ID_BOOKMARK_URL);
if ((url != null) &&
(url.length() > 0)) {
mUrlEditText.setText(url);
} else {
mUrlEditText.setHint("http://");
} mRowId = extras.getLong(Constants.EXTRA_ID_BOOKMARK_ID); } if (mRowId == -1) {
setTitle(R.string.EditBookmarkActivity_TitleAdd);
}
} /**
* Set the current title and url values as a bookmark, e.g. adding a record if necessary or set only the bookmark flag.
*/
private void setAsBookmark() {
BookmarksProviderWrapper.setAsBookmark(getContentResolver(), mRowId, mTitleEditText.getText().toString(), mUrlEditText.getText().toString(), true);
} }

通过这个控制的java文件我们可以清楚的分析出来:

①照例,是一些控件常量的声明。

②找oncreate这个数据的初始化的方法中了,对相应的数据进行初始化,赋予相应点击事件这些都是惯例性的动作,简称惯性。主要,我们知道这个界面,是从其他界面进入,数据一定是带过来的,那怎么带过来的,是通过bundle。android中的bundle是activity中传递数据的桥梁。打个比喻,Intent就是连接Activity(或其他组件,如service等等)的公路,那么Bundle就是跑在这条道路上的运输车,需要传输的数据就封装在Bundle之中。从实现上来看Bundle类是一个key-value对。

③当你点击保存按钮以后,你就把他保存到你建立一个保存数据的数据库,当然,这端数据是你编辑以后的数据了,否则就关闭此对话框。

怎么样,这个代码的实现是不是同我们猜想一模一样,华罗庚说过你倘若猜想与书写的差不多,请跳过把。大家是否猜想到代码的实现,那请你跳过这篇聱牙诘曲的文章。

揭秘uc浏览器四的更多相关文章

  1. 揭秘uc浏览器一

    首先,看一下项目完成后的,最终效果是这样的: 一.主界面 二,书签界面 三.主界面 四.操作对话框界面 这几个界面你是否看到了uc浏览器的影子了,其实我说你也可以了,在接下来篇幅中,我将手把手叫大家完 ...

  2. 揭秘uc浏览器二

    这节,四个议题: ①一个网页显示在webview控件中 ②如何正常隐藏显示标题栏. ③如何用runnable来隐藏标题栏,这样子就更加的专业化. ④上节我们说道了QuickActionGrid,看他长 ...

  3. 揭秘uc浏览器三

    这节我们主要讨论收藏与历史记录页面的边边角角. 首先,看看他的最终的效果图了: 照例了,我们先看看他的布局文件: <!-- tab布局文件 --> <TabHost xmlns:an ...

  4. UC浏览器插件开发

    pip install UC浏览器插件是个什么玩意? 如图所看到的,便是UC的插件面板. UC通过开放浏览器插件api, 使开发人员可以进行插件的开发. 插件种类: 1 : extension. 就是 ...

  5. 让你在PC上调试Web App,UC浏览器发布开发者版

    目前,在手机上使用浏览器访问网页,无法便捷地进行网页语言调试.手机屏幕相对较小且操作不便,直接在手机上进行网页数据调试不太现实. 因此,UC使用技术将手机网页调试信息分离,实现一种能在大屏幕.高配置P ...

  6. 解决UC浏览器或微信浏览器上flex兼容问题

    在UC浏览器上使用display:flex;时会不起作用,要加上兼容性写法,如下 display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ disp ...

  7. UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏

    用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...

  8. 用手机自带uc浏览器查看静态页面,css样式不显示

    问题描述: 这个问题是一个同事在写手机页面用UC浏览器测试以后遇到的,其他浏览器静态页面显示正常,唯独UC浏览器不显示页面样式. 我测试过代码是没有问题的,因为临时没有找到安卓手机,就猜想PC端的应该 ...

  9. 苹果浏览器和uc浏览器在移动端的坑(日常积累,随时更新)

    先mark 1 .  移动端uc浏览器不兼容css3 calc() 2 .  ie8下a标签没有内容给宽高也不能触发点击跳转 3 . safari输入框加上readOnly="ture&qu ...

随机推荐

  1. Google的开源C++单元测试框架Google Test

    玩转Google开源C++单元测试框架Google Test系列(gtest)(总) 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我 ...

  2. C# 高级编程9 介绍篇

    对等网络 在日常软件环境中,解决了以下问题: 不断增加的客户端通讯负载放在服务器上,服务器必须与每个客户端进行通讯,导致站点崩溃.大流量消耗.服务器无法响应等问题. 因此产生了P2B网络技术. 使用P ...

  3. Linux/CentOS实现交换机-简单的交换机实现

    个人理解: 1.交换机的核心在于Mac地址学习,使其能在全双工/半双工下进行转发工作. 2.对于专业的交换机来说,使用的是专业的网络芯片并自己实现里面的协议,比如说华为的,为什么能卖那么贵,贵在于网络 ...

  4. spring cloud 学习(2) - eureka server注册中心高可用及安全认证

    接上节继续,注册中心单点肯定是不牢靠的,可以参考下面的方案做成注册中心集群: 弄成3个节点,每个节点向其它节点注册,这样只要集群中有一个节点正常工作即可.为了方便在本机弄出这种效果,我们先修改下hos ...

  5. STM32F4 Timer simplified block diagram

    Timers TIM1 and TIM8 use 16-bit counters and are the most complex timers of all timers included in t ...

  6. ARM 非对齐的数据访问操作

    I’m confused about unaligned memory accesses on ARM. My understanding was that they’re not allowed — ...

  7. RednaxelaFX:软件工程师、主攻高级编程语言虚拟机的设计与实现

    https://www.zhihu.com/people/rednaxelafx/posts

  8. Revit API创建一个拷贝房间内对象布局命令

    本课程演示创建一个拷贝房间内对象布局命令,完整演示步骤和代码.这个命令把选中房间内的对象复制到其它选中的一个或多个房间中,而且保持与源房间一致的相对位置.通过本讲座使听众知道创建一个二次开发程序很简单 ...

  9. [Node.js]操作mysql

    摘要 上篇文章介绍了node.js操作redis的简单实例,这里介绍如何操作mysql. 安装 安装mysql模块 cnpm install mysql 一个例子 新建一个mysql.js的文件,代码 ...

  10. MEF在运行时替换插件

    利用AppDomain的ShadowCopy特性. var setup = new AppDomainSetup { CachePath = cachePath, ShadowCopyFiles = ...