杂乱的、未整理的

http://gqdy365.javaeye.com/blog/861047

 

getTag()取得标签

 

 

 

 

 

 

 

 

成员变量可以先使用,后定义

Java中标示符只能是以字符、“$”或者“_”开头

Java中布尔类型的值不能为0-1等其它值,只能为truefalse。这点与C语言是不同的

Java中用String来定义一个字符串,其类型为类类型

Java数据类型(原始数据类型):

布尔类型:boolean

字符类型:char

整数类型:byte(1),short(2),int(4),long(8)

浮点类型:float(4)

双精度类型:double(8)

Java中的标示符是可以用中文的

 

定义原始数据类型变量时,程序为该变量分配内存空间;定义非原始数据类型变量时,程序并不为该变量分配类变量所需要的内存空间。因为该变量的数据并不是相应类对象的数据,而只是定义了一个引用变量,用来指向真正的具体对象。

Java中产生一个真正的对象为对象分配内存空间是通过new方法来产生的。

Java中不用担心内存泄漏?所以不用析构函数?

 

对于非原始数据的“=”操作,如Personal 李四 = 张三;//这样张三和李四都是指向同一地址空间

 

Int [ ]3  int 3[ ] 这两种定义方法都可以

多维数组:必须指定第一维的长度

 

赋值操作:

=”表示将等号右边的变量的值或计算的结果复制到左边。注意是复制,所以,如果是原始数据类型,表示将其值,即变量中存放的数据复制到新的变量中去;非原始数据类型变量,引用也相同,复制的是引用的值,是一个地址,而不是复制引用所指向的对象,在函数调用时,执行的也是赋值操作,把实际的参数的值赋给函数的形参。

 

不同数据类型进行数学运算时,会发生类型转换

 

Java中所有的整数都是带符号的,没有无符号整数。

 

Java也支持变量的自增自减操作

 

比较符号两边斩数据返回一个布尔值true或者false

 

 

 

 

 

 

 

循环的标签:

ABC:    while(…) {

                     …..

                     for(;…;)

                            if(….) break ABC; //break后面使用循环标签,跳出了while层循环

}

 

 

abc:    do {

              …..

              while(….) {

                    

if(…)  continue abc;  //continue到外部循环

}

}

 

 

Java的构造函数不需要也不能使用void说明

 

有时用This来区分要访问的是对象的属性还是局部变量

 

构造函数的重载可以通过this关键字来相互调用,但this语句调用只能放在函数的第1

 

静态函数和变量

静态函数和方法是所有对象共享的

静态函数中不能访问非静态的成员变量

通过静态初始化程序块来为静态变量设置初始化值

 

静态初始化程序块:

Static {

       ….

}

静态初始化程序块中只能访问静态的函数或者变量

 

函数和属性的隐藏只能是相对于另一个类来说的,在类本身不存在隐藏的概念,就像人不能对自己隐藏什么

Java中所有函数都属于类,main函数也是属于类本身函数

 

Java中继承通过关键字extends来实现

对象的构造函数是不被继承的,其他的属性和方法都能够被继承

子类可以继承父类的protected方法,这时子类和父类可以不在同一个包内。但如果父类和子类不在同一个包内,则子类不能访问父类的默认方法和属性

 

如果一个类只有不带参数的构造函数时,其子类一定要定义一个构造函数,在该函数中明显地调用父类的构造函数。子类调用父类的构造函数,通过super关键字来实现

 

Java中继承是单继承,即一个子类只能有一个父类。

Java中,可以通过接口的方式来实现多重继承

Java中,可以通过instanceof这个关键字来判断一个对象属于什么类的对象,如果是,则返回true,否则返回布尔值false

 

函数的覆盖要求子类和父类的两个函数的名字相同,参数列表相同,返回值相同,抛出的异常也相同。

覆盖时,让子类的覆盖父类的函数,它的可访问性更好,即如果父类的函数是public的,子类一定要是public的;如果父类的要覆盖的函数是private的,子类可以定义为publicprotecteddefault、和private的。可访问性由高到低为:public,protected,default,private

 

Final变量:就是常量,不能被改变;final的函数是最终函数,不能够被子类覆盖;final的类是最终类,不能有子类

Final有点像C/C++中的const

Java中,局部变量没有赋初值前,是不能够访问的,而成员变量会自动初始化为0或者NULL,可以没有赋初值就访问,但是final的成员变量是不行的,在访问前必须在程序中显示赋值

Final类:不能再派生出子类

抽象类:不能产生对象

Abstract class aaa {

      

}

抽象函数:只定义函数名字、参数列表、返回值和访问控制符,但没有具体实现,这就是抽象函数。 在一个类中,有多个非抽象的函数,但只要有一个抽象函数,这个类也是抽象类。

 

(interface)接口:里面所有的函数都是抽象函数,没有非抽象的函数。  继承这样的类,也不再称为继承,而称为实现(implements)

 

通过接口可以实现多继承,即一个类可以实现多个接口

接口是公开的、没有实现的,所有接口中的方法全部默认是public的,不能定义为其他访问类型,同样,在接口里的方法都是抽象的,所以可以默认abstract关键字,同时也不能在接口中有任何的非抽象的方法

 

在接口中,方法不能被除public以外的访问控制,同时也不能有函数体,也不能有静态的函数定义。

在接口中是可以有属性的,即成员变量,但成员变量默认的都是public static final的,即静态常量

Java中的所有类必会生成class文件

Object类:

toString方法:将一个对象转换为字符串,其默认实现是返回:类的名字@哈西码

 

import类似于C中的extern?

 

 

 

Android

E2ECloud

Eclipse:  http://www.eclipse.org/downloads/

Android SDK: http://developer.android.com

安装Android SDK

1、如安装到E:/android/android-dev/android15目录中

2、要为Android的运行设置环境变量,在Windows下选择开始->设置->控制面板->系统->高级->环境变量,在环境变量对话框中选择编辑Path进行编辑,加一个分号“;”,再输入E:/android/android-dev/android15/tools

 

 

一旦确定了你的应用程序中需要的组件,那么就应该在AndroidManifest.xml中声明它们。

 

应用程序基本组件:

ActivityServiceBroadcastReceiverContentProvider

 

onCreate(), onStart(), onResume()是系统提供的回调方法

 

res resorce

把资源文件放到res目录下

在程序中引用资源:语法:android.R.resource_type.resource_name

在资源中引用其它资源:  @[resource_type]/[resource_name]

 

Android平台中常用的可视化控件:

TextViewImageViewCheckBoxRadioButtonButtonImageButtonEditTextToggleButtonAnalogClockDigitalClock

 

 

@Override表示什么?

 

Intentr主要组成部分:组件名称,Action(动作),Data(数据),Category(类别),Extra(附加信息)和Flag(标志位)

 

Fill_parent,表示填满父控件的空白

Wrap_content,表示大小刚好足够显示当前控件里的内容

 

 

super.onCreate(savedInstanceState); //super???

Super表示父类!

子对象调用父对象的方法用super;

子对象调用父对象的构造方法也用super;

不过调用父类构造方法的时候 super要写在子类构造函数的第一行!

SlidingDrawer

 

 

MenuItem

Final int MENU_SAVE = Menu.FIRST;

Final int MENU_DELETE = Menu.FIRST+1;

@Override

Public Boolean onCreateOpionsMenu(Menu menu){

    Menu.add(0,MENU_SAVE,0,”保存”)

       .setIcon(android.R.drawable.ic_menu_save);

    Menu.add(0,MENU_DELETE,0,”删除”)  //没有;号

       .setIcon(android.R.drawable.ic_menu_delete);

return true;

}

Add()方法会返回一个菜单的实例(MenuItem),我们可以通过这个实例对菜单项进一步设置。如上一个例子中,我们就直接通过MenuItem调用了setIcon()的方法来设置显示的图标。

 

监听菜单项单击:设置方法如下:

(1)       首先定义一个监听器的对象

OnMenuItemClickListener  lsn = new OnMenuItemClickListener() {

       @Override

       Public Boolean onMenuItemClick(MenuItem item) {

              ….//根据item获取的id判断哪个菜单项被单击了并处理

              Return true;

}

}

 (2) 然后用MenuItem的实例调用设置监听器的方法

menuItem.setOnMenuItemClickListener(lsn);

 

D:/work/Android/SDK/Android-sdk-2.1/tools  android.bat 

从新new一个, 256   start

 

http://code.google.com/androidbmi/wiki/AndroidLogic…

 

子菜单是可以被添加到其他菜单上的菜单,不过子菜单不能添加到子菜单上。

 

SubMenu sub = menu.addSubMenu(“搜索”);

这里的addSubMenu()方法返回一个子菜单项的实例,通过这个实例我们就可以给这个子菜单添加菜单项了。Sub.add(0,MENU_LOCAL,0,”本地”);

                            Sub.add(0,MENU_INTERNET,0,”网络”);

OnCreate()方法用于初始化Activity:填充界面,为界面控制分配数据,创建服务和线程。Oncreate()方法的参数Bundle对象包含了上一次在OnSaveInstanceState()调用时保持的用户界面信息,正确使用Bundle参数可以恢复上一次用户界面的状态。

 

getApplication()得到当前应用对象的句柄。

 

其实Launcher.java这个文件中,整个文件的内容就是一个大的Launcher类!

 

Launcher就相当于一个桌面

 

 

ADTAndroid Development Tools

 

 

 

Android SDK中的例子:

 

1、  HelloLinearLayout

 

main.xml 代码如下:

<?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"

    >

   

    <LinearLayout

       android:orientation="horizontal"

       android:layout_width="fill_parent"

       android:layout_height="fill_parent"

       android:layout_weight="1" >

       <TextView

           android:text="red"

           android:gravity="center_vertical"

           android:background="#aa0000"

           android:layout_width="wrap_content"

           android:layout_height="fill_parent"

           android:layout_weight="1"/>

       <TextView

           android:text="green"

           android:gravity="center_vertical"

           android:background="#00aa00"

           android:layout_width="wrap_content"

           android:layout_height="fill_parent"

           android:layout_weight="2"/>

       <TextView

           android:text="blue"

           android:gravity="center_vertical"

           android:background="#0000aa"

           android:layout_width="wrap_content"

           android:layout_height="fill_parent"

           android:layout_weight="3"/>

       <TextView

           android:text="yellow"

           android:gravity="center_vertical"

           android:background="#aaaa00"

           android:layout_width="wrap_content"

           android:layout_height="fill_parent"

           android:layout_weight="4"/>

    </LinearLayout>

   

    <LinearLayout

       android:orientation="vertical"

       android:layout_width="fill_parent"

       android:layout_height="fill_parent"

       android:layout_weight="1">

       <TextView

           android:text="row one"

           android:textStyle="italic"

           android:textSize="15pt"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_weight="1"/>

       <TextView

           android:text="row two"

           android:textStyle="italic"

           android:textSize="15pt"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_weight="1"/>

       <TextView

           android:text="row three"

           android:textStyle="italic"

           android:textSize="15pt"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_weight="1"/>

       <TextView

           android:text="row four"

           android:textStyle="italic"

           android:textSize="15pt"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           android:layout_weight="1"/>

    </LinearLayout>

   

</LinearLayout>

 

android:layout_weight="1"

weight的值要看你看什么方向来的,是v还是h weitht的值大小表示占了总数的多少份。

如以上一个例了子中,red1份,green2份,blue3份,yellow4

还有一个要注意的地方:两个子LinearLayout都是:android:layout_width="fill_parent"

android:layout_height="fill_parent"

 

 

Java代码:

HelloLinearLayout.java

 

package com.studio.android.HelloLinearLaout;

 

import android.app.Activity;

import android.os.Bundle;

 

public class HelloLinearLaout extends Activity {

        @Override

        public void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState);

               setContentView(R.layout.main);

        }

}

看看运行的效果:Prt Scr Sys Rq 
(当你觉得屏幕上有精彩画面的时候,快速按下 Print screen sysRq 键,这个键相当于相机快门(这个键键盘上都有,一般在方向键上部)。然后你进入画图软件 

按下CTRL+V(粘贴)就OK了) 

 

 

 

 

SDK例子2

HelloRelativeLayout

1

@+id 新增一个资源id
idandroidid,引用现有的资源id

 

2

  android:paddingLeftandroid:layout_marginLeft的区别 

当按钮分别设置以上两个属性时,得到的效果是不一样的。

android:paddingLeft="30px"

按钮上设置的内容(例如图片)离按钮左边边界30个像素

android:layout_marginLeft="30px"

整个按钮离左边设置的内容30个像素

 

 

 

 

3

以下部分内容来自网上:

 

我们从RalativeLayout可以知道,该布局的父子Container中所有的Widgets之间的位置都是相对的。你可以把Widget A放在Widget的左下方,

或者放在Widget的底边并和Container的底边之间。它允许为Container或者widget指定其相对于其他widgets或者父Container

的位置。Container或者widgets是按顺序排列的,如果第一个Container或者widget在屏幕的中央,那么相对于其

的其他Containerwidgets将以屏幕的中央来排列。如果使用XMLLayout文件来定义,被引用的Container或者widgets必须被定义。

XMLlayout文件中,我们就能够引用同一文件的Widgets,并且可以标识其他Widgets的相对位置。

标识一个Widgets在其Container中的位置,我们有下面的属性参数可以用,这些参数的值可以使true或者false
1
.android:layout_alignParentTop: 表示widget的顶部和Container的顶部重合。
2
.android:layout_alignParentBottom: 表示widget的底部和Container的底部重合。
3
.android:layout_alignParentLeft: 表示widget的左边和Container的左边重合。
4
.android:layout_alignParentRight: 表示widget的右边和Container的右边重合。
5
.android:layout_centerHorizontal: 表示widget处于Container水平方向上的中间。
6
.android:layout_centerVertical: 表示widget处于Container垂直方向上的中间。

7.android:layout_centerInParent: 表示widget处于Container平面上的正中间。

标识同一个Container中的不同的widgets之间的相对位置时,可有用如下的属性参数,参数值是其他widgets的应用。相对

位置上的widgets的引用的设定如下:首先必须给所有的被引用的widgets赋予标示符,通过android:id的属性,

格式如@+id/widget1,然后在其他widget引用的时候使用同样的标示符,格式如@id/widget1,例:如果widget A标识为@+id/widget A

widget B在其属性里面通过@id/widget A引用widget A
1.android:layout_above: 表示该widget必须位于参数值标识的widget的上方。
2.android:layout_below: 表示该widget必须位于参数值标识的widget的下方。
3
.android:layout_toLeftOf: 表示该widget必须位于参数值标识的widget的左方。

4.android:layout_toLeftOf: 表示该widget必须位于参数值标识的widget的右方。
5.android:layout_alignTop: 表示该widget的顶部必须参数值标识的widget的顶部重合。
6.android:layout_alignBottom: 表示该widget的底部必须参数值标识的widget的底部重合。
7.android:layout_alignLeft: 表示该widget的左边必须参数值标识的widget的左边重合。

8.android:layout_alignRight: 表示该widget的右边必须参数值标识的widget的右边重合。
9
.android:layout_alignBaseLine: 表示该widgetBaseLine必须参数值标识的widgetBaseLine重合。这个主要用于Label或者其他包含文本的widgets

HelloRelativeLayout

main.xml代码如下:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent">

        <TextView

        android:id="@+id/lable" 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Type Here:"/>

    <EditText

    android:id="@+id/entry"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:layout_below="@id/lable"/>

    <Button

    android:id="@+id/ok"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="ok"

    android:layout_below="@id/entry"

    android:layout_alignParentRight="true"

    android:layout_marginLeft="10dip"/>

    <Button

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="cancle"

    android:layout_toLeftOf="@id/ok"

        android:layout_alignTop="@id/ok"/>

       

</RelativeLayout>

 

Java代码如下:

package com.studio.android.HelloRelativeLayout;

 

import android.app.Activity;

import android.os.Bundle;

 

public class HelloRelativeLayout extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}

 

看看效果:

 

 

 

 

The children of a TableLayout cannot specify the layout_width attribute. Width is always MATCH_PARENT. However, the layout_height attribute can be defined by a child; default value is WRAP_CONTENT. If the child is a TableRow, then the height is always WRAP_CONTENT.

 

TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的,它是由多个TableRow对象组成,每个TableRow可以有0个或多个单元格,每个单元格就是一个View。这些TableRow,单元格不能设置layout_width,宽度默认是fill_parent的,只有高度layout_height可以自定义,默认是wrap_content

     单元格可以为empty,并且通过android:layout_column可以设置index值实现跳开某些单元格。在TableRow之间,添加View,设置layout_height以及背景色,就可以实现一条间隔线。android:layout_span可以设置合并几个单元格

 

 

.xml中注释:  <!--xxxxxx -->

 

android:stretchColumns=”1″>   第二列自动伸展

android:padding=”3dip” /> 元素内容与边界之间保留3dip的距离

android:layout_column="1"//告诉别人,我是第二列!?

 

 

表格布局TableLayout以行列的形式管理子元素,每一行是一个TableRow布局对象,当然也可以是普通的View对象,TableRow里每放一个元素就是一列,总列数由列数最多的那一行决定。

 

 

今天遇到一个低级错误:unbound prefix

         <TextView

                       android:layout_column="1"

                       android:text="Save..."

                       andriod:padding="3dip"/>

错误原因:把android写成了andriod!!!!!

 

HelloTableLayout1

main.xml代码如下:

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

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:stretchColumns="1"  //第二列可扩展

    >

    <TableRow>

         <TextView

                android:layout_column="0"  //我是第1

                android:text="Open..."

                       android:padding="3dip"/>

         <TextView

                android:text="Ctrl+O"

                       android:padding="3dip"

                       android:gravity="right"/>

    </TableRow>

    <TableRow>

         <TextView

                       android:layout_column="1" //我是第二列

                       android:text="Save..."

                       android:padding="3dip"/>

         <TextView

                android:text="Ctrl+S"

                       android:padding="3dip"

                android:gravity="right"/>

    </TableRow>

    <TableRow>

         <TextView

                android:layout_column="1"  //我是第二列

                android:text="Save as..."

                android:padding="3dip"/>

         <TextView

                android:text="Ctrl+Shift+S"

                       android:padding="3dip"

                       android:gravity="right"/>

    </TableRow>

    <View

         android:layout_height="5dip" 

         android:background="#FF909090"/>

    <TableRow>

         <TextView

                android:text="X"

                       android:padding="3dip"/>

         <TextView

                android:text="Import..."

                android:padding="3dip"/>

    </TableRow>

    <TableRow>

         <TextView

                android:text="E"

                android:padding="3dip"/>

         <TextView

                android:text="Export..."

                android:padding="3dip"/>

         <TextView

                android:text="Ctrl+E"

                android:padding="3dip"

                android:gravity="right"/>

    </TableRow>

    <View

         android:layout_height="2dip"

         android:background="#FF909090"/>

    <TableRow>

         <TextView

                android:text="Quit"

                android:padding="3dip"/>

    </TableRow>

</TableLayout>

 

 

Java代码如下:

package com.studio.android.HelloTableLayout1;

 

import android.app.Activity;

import android.os.Bundle;

 

public class HelloTableLayout1 extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}

 

看看效果:

 

 

 

 

一个ListView显示出来需要3个东西:

1listview(用来显示数据的列表)。
2
Data(需要显示的数据)
3
,一个绑定DataListview的适配器ListAdapter

 

 

 

 

1.          // 设置淡入和淡出的动画效果  

2.                  Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);  

3.                  Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);  

4.                  switcher.setInAnimation(in);  

5.                  switcher.setOutAnimation(out);  

 

 

 

 

 

 

 

 

HelloListView1

Main.xml代码如下:

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

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:padding="10dp"

    android:textSize="16sp"

/>

 

Java代码如下:

package com.studio.android.HelloListView1;

 

import android.app.ListActivity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

 

public class HelloListView1 extends ListActivity {

        /*静态数组数据*/

        String [] weekStrings = new String [] {

                       "星期日","星期一","星期二","星期三","星期四","星期五","星期六"

        };

        /*定义一个数组适配器adapter*/

        ArrayAdapter<String> adapter;

        @Override

        public void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState);

               /*构造适配器*/

               adapter = new ArrayAdapter<String>(this,R.layout.main,weekStrings);

               /*设置适配器*/

               this.setListAdapter(adapter);

        }

       

}

 

运行效果:

 

 

 

HelloListView2:

Q1

调用getListView()将返回ListActivity里的ListView控件

Q2:
setTextFilterEnabled

在任何一个listview中都有这种功能,就是是否允许输入word,来过滤列表内容

 

Q3

lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,

        int position, long id) {

      // When clicked, show a toast with the TextView text

      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),

          Toast.LENGTH_SHORT).show();

    }

  });

这一段代码是重新实现lvsetOnItemClickListener这个函数?

 

Q4

      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),

          Toast.LENGTH_SHORT).show()
这个show()Toast的呢?还是makeText返回值的show()呢?

 

Q5:

Toast用于向用户显示一些帮助/提示

 

Q6:

String [] countries = new String [] = {

               "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra"

};这样是错的、!!多了人“=”号!!!W

 

 

main.xml代码如下:

 

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

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:padding="10dp"

    android:textSize="16sp"

    />

 

Java代码:

package com.studio.android.HelloListView2;

 

import android.app.ListActivity;

import android.os.Bundle;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

import android.view.View;

 

public class HelloListView2 extends ListActivity {

        String [] countries = new String []{

                       "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",

                   "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",

                   "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",

                   "1Bahrain", "1Bangladesh", "1Barbados", "2Belarus", "2Belgium",

                   "3Belize", "3Benin", "Chile", "China"

    };

    ArrayAdapter<String> adapter; /*在这里定义adapter*/

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        adapter = new ArrayAdapter<String>(this,R.layout.main,countries);

        this.setListAdapter(adapter);

       

        ListView lv = getListView();

        lv.setTextFilterEnabled(true);

       

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?>parent,View view,int position,long id) {

              // When clicked, show a toast with the TextView text

              Toast.makeText(getApplicationContext(),((TextView)view).getText(),Toast.LENGTH_SHORT).show();

            }

          });

    }

   

}

刚开始出来的效果是:

 

有过滤功能:如按一下键盘上的1就出来

 

如按一下键盘上的2就出来

 

 

 

 

HelloGridView

Q1

ridView - 网格控件
numColumns="auto_fit" - 
列数自适应
stretchMode - 
缩放模式(stretchMode="columnWidth" - 缩放与列宽大小同步)

 

Q2NULL cannot be resolved

JavaNULL不是null

Java中要写在小写null

 

Q3、程序force close 原因之一:

GridView gridview = (GridView)findViewById(R.id.gridview); 写成了

GridView gridview = (GridView)findViewById(R.layout.main);

 

 

Java代码:

package com.studio.android.HelloGridView1;

 

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.ImageView;

import android.widget.GridView;

import android.widget.BaseAdapter;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

 

public class HelloGridView1 extends Activity {

    /** Called when the activity is first created. */

    //PNGNUM用以显示,当点击第xxx张图片时,让Toast显示picture xxx

    String [] PNGNUM = new String [] {

              "picture 1", "picture 2","picture 3","picture 4","picture 5","picture 6"

       };

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        setTitle("mygridview");//设置标题

       

        GridView gridview = (GridView)findViewById(R.id.gridview);

        gridview.setAdapter(new ImageAdapter(this));// 指定网格控件的适配器为自定义的图片适配器

       

        gridview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?>parent, View view, int position, long id) {

             Toast.makeText(HelloGridView1.this, PNGNUM[position],Toast.LENGTH_SHORT).show();

        }//HelloGridView1.this???

        });

    }

     // 自定义的图片适配器

    public class ImageAdapter extends BaseAdapter {

       private Context mContext;

   

    public ImageAdapter(Context c){

        mContext = c;

    }

   

    public int getCount(){

        return mThumbIds.length;

    }

   

    public Object getItem(int position){

        return null;

    }

   

    public long getItemId(int position){

        return 0;

    }

   

    public View getView(int position, View convertView, ViewGroup parent){

        ImageView imageView;

        if (convertView == null) {

            imageView = new ImageView(mContext);

            imageView.setLayoutParams(new GridView.LayoutParams(85,85));

            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

            imageView.setPadding(8, 8, 8, 8);

        } else {

            //convertView不为空,此时可以仅仅改变convertView的内容再直接返回convertView

            imageView = (ImageView) convertView;

        }

        //设置图片来源,也就是该imageView对象的图片内容是什么

           imageView.setImageResource(mThumbIds[position]);

        return imageView;

    }

    //网格控件所需图片数据的数据源

    private Integer [] mThumbIds = {

            R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3,

            R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6

    };

   

    }

   

}

 

main.xml代码:

 

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

<GridView xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/gridview"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:horizontalSpacing="10dp"

    android:verticalSpacing="10dp"

    android:numColumns="auto_fit"

    android:stretchMode="columnWidth"

    android:gravity="center"

    android:columnWidth="90dp"

    />

 

效果:

刚出来时:

 

 

点击一下:出来“picture 1

 

再第5张图片上点击,则出来picture 5

 

 

 

 

 

HelloDatePicker

Q1Calendar rightNow = Calendar.getInstance() //取得当前的日期
 

Q2、一般用法是showDialog(ID)  然后重载onCreateDialog

Q3protected Dialog onCreateDialog (int id)

If you use showDialog(int), the activity will call through to this methodthe first time, and hang onto it thereafter

 

Q4javastringBuilder的用法 

 

 

 

Java代码:

package com.studio.android.HelloDatePicker;

 

import java.util.Calendar;

 

import android.app.Activity;

import android.app.DatePickerDialog;

import android.app.Dialog;

import android.app.DatePickerDialog.OnDateSetListener;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.DatePicker;

import android.widget.TextView;

 

public class HelloDatePicker<stringBuilder> extends Activity {

    final int DIALOG_DATEPICKER = 1;

    Calendar c;

    TextView mShowDate;

    Button mPickDate;

    private int year;

    private int month;

    private int day;

   

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

        setTitle("Date and Time");

       

        // capture our View elements

        mShowDate = (TextView) findViewById(R.id.showDate);

        mPickDate = (Button) findViewById(R.id.pickDate);

       

        // get the current date

        c = Calendar.getInstance();

        year = c.get(Calendar.YEAR);

       month = c.get(Calendar.MONTH);

       day = c.get(Calendar.DATE);

       

       // display the current date (this method is below)

       updateShow();

      

       mPickDate.setOnClickListener(new View.OnClickListener() {

           public void onClick(View v) {

              showDialog(DIALOG_DATEPICKER);//一个showDialog与一个onCreateDialog对应;

           }                 //也就是说调用一次showDialog就会调用一次onCreateDialog?!

       }

       );

      

    }

    @Override

    protected Dialog onCreateDialog (int id){

    switch (id) {

    case DIALOG_DATEPICKER:

        return new DatePickerDialog(this,

                 new OnDateSetListener(){

                   @Override

    // the callback received when the user "sets" the date in the dialog

                   public void onDateSet(DatePicker v, int y, int m, int d) {

                      year = y;

                      month = m;

                      day = d;

                      updateShow();

                   }

        },year,month,day);

    default:

        return null;

    }

    }

    private void updateShow() {

    StringBuilder sb1 = new StringBuilder().append(month+1).append("-")

                                        .append(day).append("-")

                                        .append(year).append(" Happy Everyday!");

    mShowDate.setText(sb1);

    }

}

 

 

main.xml代码:

 

<?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:id="@+id/showDate"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text=""

    />

<Button

    android:id="@+id/pickDate"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="change the date"

    />

</LinearLayout>

 

运行效果:

刚出来时:

 

点击change the date

 

 

 

 

 

 

HelloTimePicker

Q1:  六点零八分6:08  以下这段代码就是解决这个问题的

private static String pad(int c) {
    if (c >= 10)
        return String.valueOf(c);
    else
        return "0" + String.valueOf(c);
}

 

Q2R.id.xxxx cannot be resovled

 

gen目录中没有R.java是怎么回事?

 

Java代码:

package com.studio.android.HelloTimePicker1;

 

import java.util.Calendar;

 

//import android.R;//把这个去掉,然后保存

import android.app.Activity;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.app.TimePickerDialog.OnTimeSetListener;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import android.widget.TimePicker;

 

public class HelloTimePicker1 extends Activity {

    final int TIME_DIALOG_ID = 0;

    Calendar c;

    private TextView mShowTime;

    private Button mPickTime;

    private int hour;

    private int minu;

   

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    //setContentView(R.layout.main);

       

        setTitle("TIME");

       

    // capture our View elements

        mShowTime = (TextView) findViewById(R.id.showTime);

        mPickTime = (Button) findViewById(R.id.pickTime);

       

    // get the current time   

        c = Calendar.getInstance();

        hour = c.get(Calendar.HOUR_OF_DAY);

        minu = c.get(Calendar.MINUTE);

       

        updateTime();

     // add a click listener to the button

        mPickTime.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

             showDialog(TIME_DIALOG_ID);

        }

        });

       

    }

    protected Dialog onCreateDialog (int id) {

    switch (id) {

    case TIME_DIALOG_ID:

        return new TimePickerDialog(this,

               new OnTimeSetListener() {

            @Override

            public void onTimeSet(TimePicker view, int h, int m){

               hour = h;

               minu = m;

               updateTime();

            }

        },hour,minu,false);

    default:

        return null;

    }

    }

   

    // updates the time we display in the TextView

    private void updateTime() {

    StringBuilder sb1 = new StringBuilder().append(pad(hour)).append(":")

                                        .append(pad(minu)).append(" What time is it now?");

    mShowTime.setText(sb1);

    }

   

    private static String pad(int c) {

        if (c >= 10)

            return String.valueOf(c);

        else

            return "0" + String.valueOf(c);

    }

}

 

 

main.xml代码:

<?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:id="@+id/showTime"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text=" "

    />

<Button

    android:id="@+id/pickTime"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="change the time"

    />

</LinearLayout>

 

效果:刚出来时

 

 

点击“change the time”后:

 

 

Launcher2:

 

为打开新Activity动作添加动画效果

overridePendingTransition()

 

 

http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html

 

Duration[long]

属性为动画持续时间

时间以毫秒为单位

 

 

 

LauncherModel.java

LauncherModel用来保存launcher所有运行时的变量到内存中,并提供数据库相关借口方便参数操作。系统一般只有一个Launchermodel,保证正常显示。

数据库操作就在LauncherProvider.java.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Launcher.java

 

public void onClick(View v) {

        Object tag = v.getTag();  //取得标签

        if (tag instanceof ShortcutInfo) {//如果是快捷键

            // Open shortcut

            final Intent intent = ((ShortcutInfo) tag).intent;

            int[] pos = new int[2];

            v.getLocationOnScreen(pos);

            intent.setSourceBounds(new Rect(pos[0], pos[1],

                    pos[0] + v.getWidth(), pos[1] + v.getHeight()));

            startActivitySafely(intent, tag);

        } else if (tag instanceof FolderInfo) {//如果是文件夹

            handleFolderClick((FolderInfo) tag);

        } else if (v == mHandleView) {//如果是HandleView

            if (isAllAppsVisible()) {

                closeAllApps(true); //退出 fade out

            } else {

                showAllApps(true);

            }

        }

}

 

public boolean isAllAppsVisible() {

        return (mAllAppsGrid != null) ? mAllAppsGrid.isVisible() : false;

    }

 

 

void showAllApps(boolean animated) {

        mAllAppsGrid.zoom(1.0f, animated);

 

        ((View) mAllAppsGrid).setFocusable(true);

        ((View) mAllAppsGrid).requestFocus();

       

        // TODO: fade these two too

        mDeleteZone.setVisibility(View.GONE);

}

 

void closeAllApps(boolean animated) {

        if (mAllAppsGrid.isVisible()) {

            mWorkspace.setVisibility(View.VISIBLE);

            mAllAppsGrid.zoom(0.0f, animated);

            ((View)mAllAppsGrid).setFocusable(false);

            mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();

        }

}

 

 

AllApps2D.java

 

/**

     * Zoom to the specifed level.

     *

     * @param zoom [0..1] 0 is hidden, 1 is open

     */

public void zoom(float zoom, boolean animate) {

//        Log.d(TAG, "zooming " + ((zoom == 1.0) ? "open" : "closed"));

        cancelLongPress();

 

        mZoom = zoom;

 

        if (isVisible()) {

            getParent().bringChildToFront(this);

            setVisibility(View.VISIBLE);

            mGrid.setAdapter(mAppsAdapter);

            if (animate) {

                startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.all_apps_2d_fade_in));

            } else {

                onAnimationEnd();

            }

        } else {

            if (animate) {

                startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.all_apps_2d_fade_out));

            } else {

                onAnimationEnd();

            }

        }

    }

 

protected void onAnimationEnd() {

        if (!isVisible()) {

            setVisibility(View.GONE);

            mGrid.setAdapter(null);

            mZoom = 0.0f;

        } else {

            mZoom = 1.0f;

        }

 

        mLauncher.zoomed(mZoom);

    }

 

public boolean isVisible() {

        return mZoom > 0.001f;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值