1. ContentDescription
一个 属性,供屏幕读取 API 使用,以提供控件用途的可访问说明。
<ImageButton
android:id=@+id/saveButton"
android:src="@drawable/save_image"
android:contentDescription="Save data" />
2. android:hint 在EditText 提供预期输入。
<EditText
android:id="@+id/someText"
android:hint="Enter some text" />
3.LabelFor若要将标签与数据输入控件关联
<TextView
android:id="@+id/labelFirstName"
android:hint="Enter some text"
android:labelFor="@+id/editFirstName" />
<EditText
android:id="@+id/editFirstName"
android:hint="Enter some text" />
4. Focusable 将控件标记为在导航期间特别能够接收焦点。 还可使用 nextFocus Down
nextFocus Left
nextFocus Right
nextFocusUp
属性(通常在布局 AXML 中设置)控制焦点顺序。 使用这些属性确保用户可以轻松地浏览屏幕上的控件。
label.Focusable = false;
<android:focusable="false" />
5 辅助功能和本地化 在文件存储 文件中Strings.xml 可以直接从字符串文件中查找转换后的值
Resources.GetText:
6. resource目录下称为 " 默认资源 ",并由所有设备使用,包括drawable layout values 等 此外,每种类型的资源可能有可选的 备用资源 ,Android 可能会使用这些资源来定位特定设备。 例如,可能会提供资源以面向用户的区域设置、屏幕大小,或者设备是否旋转了90度(从纵向到横向)等。在上述每种情况下,Android 都将加载用于应用程序的资源,而无需开发人员进行任何额外的编码工作。
7.安卓的活动周期详见上一博客 官方图
Running : 这会被视为 Android 中优先级最高的活动,因此,只有在极端情况下,操作系统才会终止此活动,如活动尝试使用比设备上提供的内存更多的内存,这可能会导致 UI 无响应
Paused: 当设备进入睡眠状态,或者活动仍可见,但活动仍被新的、未完全大小的或透明的活动隐藏时,该活动被视为已暂停。 暂停的活动仍处于活动状态,即,它们维护所有状态和成员信息,并保持附加到窗口管理器。
以上为安卓自带返回和home键 如果单击back键 会告诉安卓这个activity 已经完成 ,安卓进行销毁(Destroy)。但是如果点击home activity 位于活动后台(Pause)不会终止
8. 绑定状态 Bundle
当创建 OnCreate
了向其传递捆绑作为参数的方法的活动时,可以使用此绑定来还原实例状态
-
OnSaveInstanceState –在销毁活动时,Android 会调用此方法。 如果活动需要保留任何键/值状态项,则这些活动可以实现此方法。
-
OnRestoreInstanceState –在方法完成后 调用此方法,并且为活动提供了在初始化完成后恢复其状态的另一种机会。
int c; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); this.SetContentView (Resource.Layout.SimpleStateView); var output = this.FindViewById<TextView> (Resource.Id.outputText); if (bundle != null) { c = bundle.GetInt ("counter", -1); } else { c = -1; } output.Text = c.ToString (); var incrementCounter = this.FindViewById<Button> (Resource.Id.incrementCounter); incrementCounter.Click += (s,e) => { output.Text = (++c).ToString(); }; } ///当单击名 incrementCounter 为的按钮时,上面的代码会递增名为 c 的整数,并将结果显示在一个名 output 为的 TextView 中。 发生配置更改时(例如,当设备旋转时),上面的代码将丢失的值 c 所以要重写 OnSaveInstanceState protected override void OnSaveInstanceState (Bundle outState) { outState.PutInt ("counter", c); base.OnSaveInstanceState (outState); }
尽管可以轻松地保存暂时性数据,但
OnSaveInstanceState
有一些限制: -
在所有情况下均不会调用它。 例如,按 Home 或 Back 退出活动将不会导致 调用。
-
传入
OnSaveInstanceState
的捆绑包不适用于大型对象,例如图像。 对于大型对象,如下面所述,保存 OnRetainNonConfigurationInstance 中的对象更可取。
9. 保留复杂数据 OnRetainNonConfigurationInstance重写OnRetainNonConfigurationInstance 官网有搜索 Twitter 的代码
10 查询当前使用语言Local
var lang = Resources.Configuration.Locale
//实例
en_US对于英语 (美国)
es_ES 对于西班牙语 (西班牙)
ja_JP 对于日语 (日本)
zh_CN 对于中文 (中国)
zh_TW 对于中文 (台湾)
pt_PT 对于葡萄牙语 (葡萄牙)
pt_BR 对于葡萄牙语 (巴西)
11. GridView是一个在二维可滚动的网格中展示内容的控件。网格中的内容通过使用adapter
自动插入到布局中
android:columnWidth
相关方法setColumnWidth(int)。定义每一列的固定宽度。
必须是dimension值(浮点数后面拼接单位,例如“14.5sp”)。有效的单位有:px,dp,sp,in,mm。
android:gravity
相关方法setGravity(int)。定义每一个单元格的重心。
android:horizontalSpacing
相关方法setHorizontalSpacing(int)。定义了两列之间的水平间隔。
属性设置要求同android:columnWidth
android:numColumns
相关方法setNumColumns(int)。定义了展示的列数。
android:verticalSpacing
相关方法setVerticalSpacing(int)
。定义两行之间的垂直间隔。
属性设置要求同android:columnWidth