acc8226 的博客

http://developer.android.youdaxue.com/guide/topics/ui/menus.html

菜单是许多应用类型中常见的用户界面组件。要提供熟悉而一致的用户体验,您应使用 Menu API 呈现 Activity 中的用户操作和其他选项。
从 Android 3.0(API 级别 11)开始,采用 Android 技术的设备不必再提供一个专用“菜单”按钮。随着这种改变,Android 应用需摆脱对包含 6 个项目的传统菜单面板的依赖,取而代之的是要提供一个应用栏来呈现常见的用户操作。
尽管某些菜单项的设计和用户体验已发生改变,但定义一系列操作和选项所使用的语义仍是以 Menu API 为基础。本指南将介绍所有 Android 版本系统中三种基本菜单或操作呈现效果的创建方法:

  • 选项菜单和应用栏
    选项菜单是某个 Activity 的主菜单项, 供您放置对应用产生全局影响的操作,如“搜索”、“撰写电子邮件”和“设置”。请参阅创建选项菜单部分。

  • 上下文菜单和上下文操作模式
    上下文菜单是用户长按某一元素时出现的浮动菜单。 它提供的操作将影响所选内容或上下文框架。上下文操作模式在屏幕顶部栏显示影响所选内容的操作项目,并允许用户选择多项。
    请参阅创建上下文菜单部分。

  • 弹出菜单
    弹出菜单将以垂直列表形式显示一系列项目,这些项目将锚定到调用该菜单的视图中。 它特别适用于提供与特定内容相关的大量操作,或者为命令的另一部分提供选项。 弹出菜单中的操作不会直接影响对应的内容,而上下文操作则会影响。 相反,弹出菜单适用于与您 Activity 中的内容区域相关的扩展操作。请参阅创建弹出菜单部分。

阅读全文 »

AsyncTask

http://developer.android.youdaxue.com/reference/android/os/AsyncTask.html

1
2
3
public abstract class AsyncTask extends [Object](http://developer.android.youdaxue.com/reference/java/lang/Object.html) 
[java.lang.Object](http://developer.android.youdaxue.com/reference/java/lang/Object.html)
android.os.AsyncTask<Params, Progress, Result>

AsyncTask enables proper and easy use of the UI thread. This class allows you to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.
AsyncTask is designed to be a helper class around Thread and Handler and does not constitute a generic threading framework. AsyncTasks should ideally be used for short operations (a few seconds at the most.) If you need to keep threads running for long periods of time, it is highly recommended you use the various APIs provided by the java.util.concurrent package such as Executor, ThreadPoolExecutor and FutureTask.
An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called Params, Progress and Result, and 4 steps, called onPreExecute, doInBackground, onProgressUpdate and onPostExecute.

阅读全文 »

View

View.getVisibility()

很显然,我们可以用 View.getVisibility() 来检查一个它是否处于View.VISIBLE状态。这是最基本的检查,如果连这个方法得到的返回值都是View.INVISIBLE或者View.GONE 的话,那么它对用户肯定是不可见的。

View.isShown()

这个方法相当于对 View 的所有祖先调用 getVisibility 方法。

布局管理器 ViewGroup

常用三大布局

  1. 帧布局 FrameLayout - 用于单个子视图。
  2. 线性布局 LinearLayout - 用于横向或竖向依次摆放视图的布局。
  3. 相对布局 RelativeLayout - 用于定义与父视图和兄弟视图的相对位置的布局。

绝对布局(已淘汰)

这些布局管理器都扩展了 View Group 类(它本身是 View 类的子类),该类专门设计为包含和布置多个子视图。这意味着,如果您特别有冒险精神,完全可以创建自己的布局管理器。

ScrollView

public class ScrollView
extends FrameLayout
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.FrameLayout
android.widget.ScrollView

它是 FrameLayout 类的子类(这意味着您应该只放入一个子视图,该子项包含要滚动的完整内容),允许用户垂直滚动,来展示比屏幕可显示范围更多的内容。ScrollView 通常包含一个垂直方向的 LinearLayout。

ListView

1
2
3
4
5
6
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView<android.widget.ListAdapter>
↳ android.widget.AbsListView
↳ android.widget.ListView

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.
See the List View guide.

ListView 是为显示较多项列表而优化的特殊控件。它能非常高效地创建、回收和显示视图,而且经过优化,能非常顺畅地滚动。

在自定义 listview 的 item 的布局的时候, 通常加上最小高度的属性, 防止高度过小导致用户点击不到。 android:minHeight="?android:attr/listPreferredItemHeight"

而且还常常加上垂直居中 android:gravity="center_vertical"

常用控件

edittext 不写的话 getText 不为null, 然后得到的是空字符串 “”, 然后长度为0

EditText 主题一般会自带背景,如果需要去掉的话, android:background=“@null”

Android Button 默认样式高度问题, 去掉可用android:minHeight="0px"

代码设置textview 字体颜色

1
2
3
4
5
6
7
8
9
setTextColor(0xFF0000FF);
//0xFF0000FF 是 int 类型的数据,分组一下 0x|FF|0000FF,0x 是代表颜色整 数的标记,ff是表示透明度,0000FF表示颜色,注意:这里 0xFF0000FF 必须是8个的颜色表示,不接受 0000FF 这种 6 个的颜色表示。
setTextColor(Color.rgb(255, 255, 255));
setTextColor(Color.parseColor("#FFFFFF"));
//还有就是使用资源文件进行设置
setTextColor(this.getResources().getColor(R.color.blue));
//通过获得资源文件进行设置。根据不同的情况R.color.blue也可以是R.string.blue或者
//另外还可以使用系统自带的颜色类
setTextColor(android.graphics.Color.BLUE);

TextView按下和抬起时的颜色变换

<item android:drawable="@drawable/xxx" android:state_enabled="false"/>改成<item android:color="#f1f1f1" android:state_enabled="false"/>即可

用法: 和按钮类似, 按钮改变的是android:background, 而这个改变的是android:textColor

读取 xml 中读取尺寸单位的三个方法

工作上碰到需要从 xml 中读取尺寸的问题。发现 getResources()下有3个获取方法。

  • getDimension()方法,返回类型是float,他是没有做任何处理的数值。
  • getDimensionPixelOffset(),返回类型int,他会把计算结果直接强转成int型。
  • getDimensionPixelSize(),返回类型 int,他会把计算结果四舍五入。

举个例子就很好明白了,如果getDimension()方法得到的数值是44.5,那么getDimensionPixelOffset()得到的就是44,getDimensionPixelSize()就是45.

android中getWidth()和getMeasuredWidth()之间的区别

getMeasuredWidth()获取的是 view 原始的大小,也就是这个 view 在XML文件中配置或者是代码中设置的大小。
getWidth()获取的是这个 view 最终显示的大小,这个大小有可能等于原始的大小也有可能不等于原始大小。

意图是安卓中重要核心组件之一。

Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

  • 启动 Activity
  • 启动服务
  • 传递广播

Intent 分为两种类型:

  • 显式 Intent:按名称(完全限定类名)指定要启动的组件。 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
  • 隐式 Intent :不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
阅读全文 »

异常的层次

异常指的是程序运行时出现的不正常情况。程序运行过程中难免会发生异常,发生异常并不可怕,程序员应该考虑到有可能发生这些异常,编程时应能正确的处理异常,使成为健壮的程序。

异常是相对于 return 的一种退出机制,可以由系统触发,也可以由程序通过 throw 语句触发,异常可以通过 try/catch 语句进行捕获并处理,如果没有捕获,则会导致程序退出并输出异常栈信息。

Java 的异常类是处理运行时的特殊类,每一种异常对应一种特定的运行错误。所有 Java 异常类都是系统类库 Exception 类的子类。

异常类继承层次图

Throwable 类

所有的异常类都直接或间接地继承于 java.lang.Throwable 类,在 Throwable 类有几个非常重要的方法:

  • String getMessage():获得发生异常的详细消息。
  • void printStackTrace():打印异常堆栈跟踪信息。
  • void printStackTrace(PrintStream s) 通常用该方法将异常内容保存在日志文件中,以便查阅。
  • String toString():获得获取异常类名和异常信息的描述。
阅读全文 »
0%