Intent研究

2010年04月2日

//创建实例
Intent i = new Intent();
//设置启动对象
i.setClass(A.Class,B.Class);
//以下方法可选
startActivity(i);//直接启动
startActivityForResult(i,123);//返回启动
A.Class
需要添加返回事件onActivityResult,data.getExtras().getString("back");
获取对象(myclass = (MyClass)intent.getSerializableExtra("myclass");)
B.Class
Intent i = new Intent();
i.putExtra("back","返回的字符串");
setResult(456,i);
finish();

Android UI Layout 之 AbsoluteLayout

2010年01月22日

在Android UI中,最基本的构建单位(building block)是 android.view.View。一个 View 占据屏幕上的一个矩形区域,并负责该区域的绘画和事件处理。View 有一些子类,比如 ImageView、TextView 等可分别用来显示图像、文字…… View 还有一个特殊的子类 ViewGroup,ViewGroup 在 UI layout 中充当“容器”的角色,用以“包含”其他 View 以及 ViewGroup:

由于 ViewGroup 是一个 abstract class 无法直接实例化,所以在 layout 中真正充当“容器”角色的应该是 ViewGroup 的子类 :AbsoluteLayout、 FrameLayout、 LinearLayout、 RelativeLayout 等。在实际的 UI 编程中,使用不同的 Layout 类作为容器,对该容器中的各个子 View 的排列方式有很大影响。比如,LinearLayout 中的各个子 View 按照横向或者纵向线性排列;而 AbsoluteLayout 中各个子 View 可以指定以像素为单位的“绝对”位置。AbsoluteLayout 的这种“绝对”定位的布局方式和我们非常熟悉的 Windows 编程中的 SetWindowPos() 或 Form1.Left = 10 的布局方式是一样的,比较简单:
现在我们新建一个 Android 工程中,在其主 Activity 类中添加如下三个成员:

1
2
3
private AbsoluteLayout al;
private TextView tv;
private View v;

private AbsoluteLayout al;
private TextView tv;
private View v;

改写这个类的 onCreate 方法如下:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);

// 构造一个 AbsoluteLayout,设置其背景色
al = new AbsoluteLayout(this);
al.setBackgroundColor(Color.YELLOW);
// 构造一个 TextView 并设置其 text 和 背景色
tv = new TextView(this);
tv.setText(“Android is a software stack for mobile devices that includes an operating system, middleware and key applications. “);
tv.setBackgroundColor(Color.BLUE);
// 用该 View 在父 View 中的 width,height,x,y 作为参数构造一个 AbsoluteLayout.LayoutParams
AbsoluteLayout.LayoutParams tvLP = new AbsoluteLayout.LayoutParams(70, 50, 10, 20);
// 把这个 TextView 加入到 AbsoluteLayout 中,并应用上一步创建的 LayoutParams。这样 TextView 就会显示在我们指定的位置上了。
al.addView(tv, tvLP);

v = new View(this);
v.setBackgroundColor(Color.RED);
AbsoluteLayout.LayoutParams vLP = new AbsoluteLayout.LayoutParams(70, 50, 90, 70);
// 也可以先为子 View 设置 LayoutParams,然后再调用一个参数的 ViewGroup.addView(View) 来添加。效果是一样的。
v.setLayoutParams(vLP);
al.addView(v);

// 设置 al 为本 Activity 的 content
// 这样,在该 Activity 被调用时,就会显示该 AbsoluteLayout 和其子 View
this.setContentView(al);
}

手机发博客

2010年01月22日

image

看看

android布局学习利器-Hierarchy Viewer

2010年01月22日

Hierarchy Viewer 帮你分析应用程序UI布局

Hierarchy Viewer在android的工具文件夹里: \android\tools\hierarchyviewer.bat

1.启动 模拟器。

2.到\android\tools\目录下,双击可以启动hierarchyviewerbat文件,打开一个图形界面。

3.点击 load View hierarchy按钮,就可以捕获模拟器当前activity的画面布局信息。

4.hierarchy通过树形结构展示布局形式。

5.双击树节点可以展示单独的UI部分。

6.当模拟器activity画面变更后,点击refresh可以加载新的页面布局信息。

通过Hierarchy Viewer你就可以学习别人优秀的布局方式,
同时也更能更深入更全面更整体的把握xml布局文件。
体会UI和代码(java code)以及资源(res)的相互分离。

eclipse显示行数

2010年01月22日

Window-Preferences-General-Editors-Text Editor :show line numbers;

Layouts

2010年01月20日

Layout资源是通过在XML中设计UI布局来作为显示层的内容,而不是在代码中去构建它们。

 

Layout最常用的用途是为Activity定义UI。一旦在XML中定义,一般就在Activity的onCreate方法中通过setContentView进行显示。

 

你同样可以引用其它的layout资源,例如为ListView的每一行设定layout。更多的关于在Activity中使用和创建layout的信息你可以在第4章中看到。

 

在Android中,使用layout来创建屏幕的UI是一个好的习惯。将代码和layout分离开来,有助于你为不同的硬件配置(例如,变化的屏幕大小,方向或者键盘和触摸屏的显示)创建最优的layout。

 

每一个layout定义在/res/layout文件夹下的独立的文件里,包含单个layout。文件名就是layout资源的标识。

 

关于layout面板和View元素的详尽解释会在下一章。但作为一个例子,下面的代码片段显示了新工程向导创建的layout。它使用LinearLayout作为一个layout面板,容纳显示“Hello World”问候的TextView。

<?xml version=”1.0” encoding=”utf-8”?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”>

<TextView

android:layout_width=”fill_parent”

android:layout_height=”wrap_content”

android:text=”Hello World!”

/>

</LinearLayout>

手机发博客

2010年01月20日

看看

Hello world!

2010年01月20日

欢迎使用 WordPress 。这是系统自动生成的演示文章。编辑或者删除它,开始您的博客!