第一行代码和android编程权威指南哪个好

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一行代码和android编程权威指南哪个好相关的知识,希望对你有一定的参考价值。

  大一时开始接触android,翻过几本书,但是后来都不了了之。原因不外乎那些书学起来真的很吃力,也很难提起自己的兴趣。机械专业,只学过C语言基础,期间自学了下Java的语法,了解了下简单的面向对象编程概念。

  这段时间晚上比较空闲,就又开始学习Android了。
  看的书就是《第一行代码》,学了不到1个月吧,把书上前八章的内容仔细看了,每个例子的代码都敲了一遍。
  反正每天实习回来,就背上包去图书馆找个座,看书,敲代码,看着一个个小例子在手机上运行起来,很有成就感,加上书讲解的很详细,也能很好地理解原理。

  上周五晚上,开始着手写一个拨号应用(Moto g,5.0系统,自带的拨号不支持T9拨号,应用商店里也没自己看的习惯的代替产品,就准备自己写一下。)
  一个晚上加双休日,整个应用基本搞定。
参考技术A   这里我们给Crime实体类添加两个变量,java.util.Date类型的mDate和布尔类型的mSolved

  用于表示陋习记录的时间和是否更改陋习。

  public class Crime

  private UUID mUid;

  private String mTitle = "";

  private Date mDate;

  private Boolean Solved = false;

  /**省略get set方法*/

  同时在布局中也添加一个Button和CheckBox

  android:id="@+id/crime_date"

  android:layout_height="wrap_content"

  android:layout_width="match_parent"

  android:textSize="20sp"

  android:text="@string/submit"

  android:background="@drawable/submit"

  />

  android:id="@+id/isSolved"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="@string/isSolved"

  />

  这边我门再给Button进行背景设置,在res/drawable下面创建submit.xml的安装文件

  有关android:state

  android 标签描述

  android:state_pressed

  是否按下,如一个按钮触摸或者点击

  android:state_focused是否取得焦点,比如用户选择了一个文本框

  android:state_hovered 光标是否悬停

  android:state_selected它与focus state并不完全一样,如一个list view
被选中的时候,它里面的各个子组件可能通过方向键,被选中了。

  android:state_checkable组件是否能被check。如:RadioButton是可以被check的

  android:state_checked被checked了,如:一个RadioButton可以被check了

  android:state_enabled能够接受触摸或者点击事件

  android:state_activated被激活

  android:state_window_focused应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了

  如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用

  效果如下:点击Button按钮后会显示颜色的变化。

  

  但是如果将,屏幕旋转,效果将变化为button横跨整个屏幕,我们希望Button和CheckBox是各占整行的50%

  为此我们再添加一个landscape(横向)布局

  在res目录下右键,选择Android XML File

  

  写入名字,要与原来纵向布局的名字一样。

  

  选择纵向的

  

  

  这样以后你会看到在res 目录下多出一个layout-land目录,表示在横向情况下用该布局文件。

  

  修改横向布局,在原来checkBox和Button位置替换为一下代码

  android:layout_width="match_parent"

  android:layout_height="wrap_content"

  android:orientation="horizontal"

  >

  android:id="@+id/crime_date"

  android:layout_height="wrap_content"

  android:layout_width="wrap_content"

  android:layout_weight="1"

  android:textSize="20sp"

  android:text="@string/submit"

  android:background="@drawable/submit"

  />

  android:id="@+id/isSolved"

  android:layout_weight="1"

  android:layout_marginLeft="20dp"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="@string/isSolved"

  />

  书上有个图能够很好的表示android:layout_weight属性。android:layout_weight属性与android:layout:width属性相关(LinearLayout纵向条件下与android:layout:height相关)

  如果Button和CheckBox的android:layout_width属性都为wrap_content,则空间分配如下,含有额外的空间(extra
space)

  

  然后给Button和CheckBox添加android:layout_weight="1"属性,则会将额外空间按1:1的比例分配给Button和CheckBox

  

  如果android:layout_weight比例是2:1(Button 2,CheckBox 1)那么额外空间会按2;1进行分配

  

  那么,如果想让Button和CheckBox总的空间分配各占一般怎么办呢?

  可以在初始将android:layout_width="0dp",即在一开始不设置宽度,通过android:layout_weight进行空间分配。

  

  这样我们完全控制了CrimeFragment在Portrait(纵向)和Landscape(横向)情况下的布局情况。纵向图在上面可以找到

  
参考技术B 不知道你说的是什么意思

安卓权威编程指南-笔记(第25章 搜索)

1. SearchView

SearchView是个操作视图,所谓操作视图,就是可以内置在工具栏中的视图。SearchView可以让整个搜索界面完全内置在应用的工具栏中。

 

1.1 SearchView的配置

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_item_search"
        android:title="@string/search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom" />
</menu>

 

app:actionViewClass指定android.support.v7.widget.SearchView值,告诉工具栏要显示 SearchView 。

之后通过 onCreateOptionsMenu()方法进行实例化菜单XML文件,这样,工具栏就能显示定义在菜单XML中的选项了。

 

1.2 SearchView的使用

 

对其实例化,然后设置回调的接口。

MenuItem searchItem = menu.findItem(R.id.menu_item_search); //将MenuItem取出并保存在searchItem变量中。
        mSearchView = (SearchView)searchItem.getActionView(); //取出SearchView对象。



        //设置监听器
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {//提交搜索查询时。这个方法执行。
                Log.d(TAG, "onQueryTextSubmit: "+ s);
                return true;
            }

            @Override
            public boolean onQueryTextChange(String s) { //搜索框的文字有变化时,这个方法执行。
                Log.d(TAG, "onQueryTextChange: " + s);
                return false;
            }
         });

 

2.使用 shared preferences 实现轻量级数据存储

shared preferences本质上就是文件系统中的文件,可使用 SharedPreferences 类读写它。SharedPreferences 实例用起来更像一个键值对仓库(类似于 Bundle ),但它可以通过持久化存储保存数据。键值对中的键为字符串,而值是原子数据类型。进一步查看shared preferences文件可知,它们实际上是一种简单的XML文件,但 SharedPreferences 类已屏蔽了读写文件的实现细节。shared preferences文件保存在应用沙盒中,所以,类似密码这样的敏感信息不应该用它来保存。

要 获 得 定 制 的 SharedPreferences 实 例 , 可 使 用 Context.getSharedPreferences(String,int) 方法。然而,在实际开发中,我们并不关心具体是什么样的 SharedPreferences实例,只要它能共享于整个应用就可以了。这种情况下,最好使用 PreferenceManager.getDefaultSharedPreferences(Context) 方法,该方法会返回具有私有权限和默认名称的实例(仅在当前应用内可用)。

Shared Preference 示例:

public class QueryPreferences {
    private static final String PREF_SEARCH_QUERY = "searchQuery";
    public static String getStoredQuery(Context context) {
    return PreferenceManager.getDefaultSharedPreferences(context).getString(PREF_SEARCH_QUERY, null);
  }
    public static void setStoredQuery(Context context, String query) {
    PreferenceManager.getDefaultSharedPreferences(context)
    .edit()
    .putString(PREF_SEARCH_QUERY, query)
    .apply();
  } }

 



以上是关于第一行代码和android编程权威指南哪个好的主要内容,如果未能解决你的问题,请参考以下文章

Android开发权威指南的图书目录

电子书 Android编程权威指南 第2版.pdf

Android编程权威指南(第2版)--第16章 使用intent拍照 挑战练习

Android编程权威指南.第3版.pdf PDF下载

android编程权威指南 第三版 pdf

安卓权威编程指南-笔记(第25章 搜索)