揭秘uc浏览器四
请问大家用过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对。
③当你点击保存按钮以后,你就把他保存到你建立一个保存数据的数据库,当然,这端数据是你编辑以后的数据了,否则就关闭此对话框。
怎么样,这个代码的实现是不是同我们猜想一模一样,华罗庚说过你倘若猜想与书写的差不多,请跳过把。大家是否猜想到代码的实现,那请你跳过这篇聱牙诘曲的文章。