zoukankan      html  css  js  c++  java
  • 揭秘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对。

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

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

  • 相关阅读:
    解决:Could not resolve archetype org.apache.maven.archetypes
    Spring MVC配置MyBatis输出SQL
    Spring集成MyBatis 通用Mapper以及 pagehelper分页插件
    关于SpringMVC或Struts2接受参数接收不到的原因
    配置quartz启动时就执行一次
    ajaxFileUpload进行文件上传时,总是进入error
    spring mvc注入配置文件里的属性
    java中将一个文件夹下所有的文件压缩成一个文件
    flume failed to start agent because dependencies were not found in classpath
    ubuntu不能安装pip unable to install pip in unbuntu
  • 原文地址:https://www.cnblogs.com/manuosex/p/3617658.html
Copyright © 2011-2022 走看看