我开发android的第一个实例

1.将sdk复制到android-sdk-windows\platforms下.如果有网络的话就android-sdk-windows可以自动下,如果已经手动单独把sdk下好了,那么要手动复制到android-sdk-windows下.
2.安装Eclipse插件ADT.
3.新建android项目.
4.建立配置ADT(ctrl+F11调屏幕方向)

由于官方的下载页面被和谐了...
(SDK等我是在这里下载的:http://www.android123.com.cn/android_kit.html)

Activity就相当于一个页面,所以我们每个类都要去继承它.
在onCreate中可以创建组件视图.
创建完毕后要setContentView(组件视图);让它显示在屏幕中.

如果有多个组件的话,就可以使用XML来创建组件视图以及布局.
我们创建的组件视图都是在布局中的.
默认布局是LinearLayout.
创建视图的id表示 例:@+id/btnOk
如果在XML中要引用已建立的组件视图id那么就直接用如@id/btnOk表示.

如果是字符串那么就使用@string/strings来表示.
其中的strings是在string.xml中定义的.
例:
<string name="strings">TestHello</string>
这个strings就表示TestHello.
表示颜色等都是这样
例颜色:<string name="red">#ff0000</string>

如果显示图像的话就使用@drawable/icon1
例:<ImageButton android:src="@drawable/icon1" .../>

在xml中创建的组件在Java中调用例:
Button btn=(Button) findViewById(R.id.btn);
每当我们改动XML的时候系统就会自动重新生成R.Java

事件一定要在setContentView(R.layout.main)之后写,要不然会报错.
创建完才能find到组件视图.
添加事件:
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {...}
}
参数arg0是所触发事件的视图.

AndroidManifest.xml相当于全局配置文件.
如果要改程序的显示图标,那么就改
<application android:icon="@drawable/icon1" .../>

布局:
LinearLayout:按照水平或垂直进行排列.android:orientation="vertical"(或horizontal)
FrameLayout:左上区,如果添加多个子元素,那么重叠显示在一个元素上.
RelativeLayout:关系布局,添加的时候指定与某个元素的位置;比如之上\之右;出于性能考虑该布局的精确位置只会计算一次.
TableLayout:表格式布局.没什么好说的...
TableRow标签标示布局里面的一行.

布局可以在XML中创建,一般为根元素.
也可以在类中创建;例:
LinearLayout layoutMain=new LinearLayout(this);//创建布局
layoutMain.setOrientition(LinearLayout.HORIZONTAL);//设置为竖直方向
setContentView(layoutMain);//将我们建立的布局与activity关联.

//LayoutInflater对象可以解析XML中的布局.
LayoutInflater inflate=(LayoutInflater)getSystemService(Content.LAYOUT_INFLATER_SERVICE);
RelativeLayout layoutLeft=inflate.inflate(R.layout.left,null);//解析并生成一个RelativeLayout布局.
RelativeLayout.LayoutParams relParam=
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WARP_CONTENT,
RelativeLayout.LayoutParams.WARP_CONTENT );
生成relationlayout的布局参数.
layoutMain.addView(layoutLeft,100,100);//加入布局视图,高度,宽度
layoutMain.addView(layoutRight,relParam);//加入布局视图,布局参数

参数值:
FILL_PARENT:和父容器一样大.
WARP_CONTENT:和内容一样大.

Activity跳转:
在相应事件中:
Intent intent=new Intent();
intent.setClass(TestHello.this, Hello.class);//从第一个参数的页面跳转到第二个参数的页面.
startActivity(intent);//启动这个跳转
在AndroidManifest.xml中的<application>内加入<activity android:name="类"></activity>

结束当前activity,方法为:finish();

activity间跳转传值:
intent.putExtra("key",value);
startActivityForResult(intent,REQUEST_CODE);
//startActivityForResult()这个方法启动Intent,并且当新的activity运行结束的时候,还必须执行原Activity的回调函数onActivityResult().
//startActivity()这个方法在新的activity执行完后不会执行回调函数,也不用返回任何值.

接传来的值:
Bundle extras=getIntent().getExtras();
String key=extras.getString("key");

Bundle类型是一个类型安全的容器,它的实现是HashMap.它只能存放基本类型或基本类型的数组(有String);

setResult(RESULT_OK,intent);
setResult()方法第一个参数是返回结果码,第二个参数是返回调用此activity的intent.
onActivityResult(int requestCode,int resultCode,Intent data);
第一个参数原始Intent中requestCode,
第二个参数暗示了在心的activity中操作是否合法正确.如果一切是正确的,那么就返回0,如果返回值不是0,那就说明程序运行出现了问题.android提供了一些标准的值,但也可以自己设置.
第三个参数要返回的Intent





数据库:
SharedPreferences:存储方式非常方便,但只适合存储比较简单的数据.
文件存储:以文件的方式存放/读取
SQLite:
内容提供器(Content provider):可多程序共享

SharedPreferences:
SharedPreferences sp=getSharedPreferences("story", 0);
String txt=sp.getString("txt", "");//取数据,default值
sp.edit().putString("txt",edt.getText().toString()).commit();//存数据,最后提交.
data/data/包/shared_prefs

文件存储:
String FILE_NAME="story.tmp";
FileOutputStream fos=openFileOutput(FILE_NAME,Context.MODE_PRIVATE);//获得流
FileInputStream fis=openFileInput(FILE_NAME);

如果文件不存在,则自动创建,如果存在,则覆盖.
如果不想覆盖则使用Context.MODE_APPEND
默认情况下该文件只能被调用的应用程序使用,其他应用程序无法读取这个文件.
除了openFile的方法外,还有deleteFile,fileList等方法来操作文件.


如果要用额外资源则放在/res/raw/下,然后使用getResources获取资源.
Resources myRes=getResources();
InputStream myFile=myRes.openRawResources(R.raw.myFile);

SQLite:当调用SQLiteOpenHelper类中的getWritableDatabase()或者getReadableDatabase()方法的时候,如果没有数据,那么android系统就会自动生成一个数据库.SQLiteOpenHelper是一个抽象类,我们通常要继承它,并实现onCreate,onUpgrade,onOpen方法.
onCreate数据库第一次生成的时候会调用这个方法,一般我们在这个方法里生成数据库表.
onUpgrade当数据库需要升级的饿时候,android系统会主动的调用这个方法,一般我们在这个方法里面删除数据表,并建立新的数据表.
onOpen当打开数据库时的回调函数.

执行sql则调用db.execSQL(sql);db是SQLiteDatabase类型,它是参数.

Log.i()会将参数内容打印到日志中,并且打印级别是info级别,在使用LogCat工具可以查看.


SQLiteDatabase db=mOpenHelper.getReadableDatabase();
String col[]={"col1","col2"};
Cursor cur=db.query(tableName,col,null,null,null,null,null);
Integer num=cur.getCount();//获取记录条数.
db.query的参数:
第一个参数:表名
第二个参数:要返回的列
第三个参数:selection,相当于sql语句的where部分.如果想返回所有数据,那么就null;
第四个参数:selectionArgs,在selection部分,有可能用"?",那么selectionArgs定义的地祖传会代替?
第五个参数:group by
第六个参数:having
第七个参数:order by

db.delete的参数:
第一个参数:数据库表名
第二个参数:相当于sql语句的where部分
第三个参数:是第二个参数中参数的参数(代替第二个参数中?的部分)

ContentValue类和Hashtable类似,但值都是基本类型.



.java

package com.example.brewclock;


import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class BrewClockActivity extends Activity implements OnClickListener
{
/** Properties **/
protected Button brewAddTime;
protected Button brewDecreaseTime;
protected Button startBrew;
protected TextView brewCountLabel;
protected TextView brewTimeLabel;


protected int brewTime = 3;
protected CountDownTimer brewCountDownTimer;
protected int brewCount = 0;
protected boolean isBrewing = false;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


// Connect interface elements to properties
brewAddTime = (Button) findViewById(R.id.brew_time_up);
brewDecreaseTime = (Button) findViewById(R.id.brew_time_down);
startBrew = (Button) findViewById(R.id.brew_start);
brewCountLabel = (TextView) findViewById(R.id.brew_count_label);
brewTimeLabel = (TextView) findViewById(R.id.brew_time);

// Setup ClickListeners
brewAddTime.setOnClickListener(this);
brewDecreaseTime.setOnClickListener(this);
startBrew.setOnClickListener(this);

// Set the initial brew values
setBrewCount(0);
setBrewTime(3);
}

/** Methods **/

/**
* Set an absolute value for the number of minutes to brew. Has no effect if a brew
* is currently running.
* @param minutes The number of minutes to brew.
*/
public void setBrewTime(int minutes)
{
if(isBrewing)
return;

brewTime = minutes;

if(brewTime < 1)
{
brewTime = 1;
}


brewTimeLabel.setText(String.valueOf(brewTime) + "m");
}

/**
* Set the number of brews that have been made, and update the interface.
* @param count The new number of brews
*/
public void setBrewCount(int count)
{
brewCount = count;
brewCountLabel.setText(String.valueOf(brewCount));
}

/**
* Start the brew timer
*/
public void startBrew()
{
// Create a new CountDownTimer to track the brew time
brewCountDownTimer = new CountDownTimer(brewTime * 60 * 1000, 1000)
{
@Override
public void onTick(long millisUntilFinished)
{
brewTimeLabel.setText(String.valueOf(millisUntilFinished / 1000) + "s");
}

@Override
public void onFinish()
{
isBrewing = false;
setBrewCount(brewCount + 1);

brewTimeLabel.setText("Brew Up!");
startBrew.setText("Start");
}
};

brewCountDownTimer.start();
startBrew.setText("Stop");
isBrewing = true;
}

/**
* Stop the brew timer
*/
public void stopBrew()
{
if(brewCountDownTimer != null)
{
brewCountDownTimer.cancel();
}

isBrewing = false;
startBrew.setText("Start");
}

/** Interface Implementations **/
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
public void onClick(View v)
{
if(v == brewAddTime)
{
setBrewTime(brewTime + 1);
}
else if(v == brewDecreaseTime)
{
setBrewTime(brewTime -1);
}
else if(v == startBrew)
{
if(isBrewing)
{
stopBrew();
}
else
{
startBrew();
}
}
}
}




<?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="wrap_content"
android:padding="10dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dip"
android:text="Brews: " />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="None"
android:gravity="right"
android:textSize="20dip"
android:id="@+id/brew_count_label" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="10dip">
<Button
android:id="@+id/brew_time_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:textSize="40dip" />
<TextView
android:id="@+id/brew_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0:00"
android:textSize="40dip"
android:padding="10dip" />
<Button
android:id="@+id/brew_time_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="40dip" />
</LinearLayout>
<Button
android:id="@+id/brew_start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Start" />
</LinearLayout>











Android 百度开发 包介绍




android.content.Context 使用辅助getDefaultAdapter(Context)获得这个Android设备的NFC默认适配器


android.graphics.Canvas
要画的东西,你需要4个基本组成部分:(以位图举行的像素,画布举办的抽奖电话(到点阵图书面),原始图纸(如矩形,路


径,文本,位图),和油漆描述为绘图的颜色和款式)


android.graphics.Paint
渲染类包含有关如何绘制几何形状,文本和位图的样式和颜色的信息。


android.graphics.drawable.Drawable
一个drawable是一般的抽象“的东西,可以得出。”大多数情况下,你会处理绘制的资源类型检索绘制到屏幕上的东西;


Drawable类提供了一个基本的视觉资源,可采取各种形式的一个通用的API。视图不同,一个drawable没有任何设施接收事件,


或以其他方式与用户交互。


android.location.Location
一个地理位置感觉到在特定的时间(“修复”)。一个位置,包括经度和纬度,UTC时间戳。并有选择地对高度,速度,和轴承


的信息。


android.os.Bundle
从字符串值映射到各种能够包裹类型。


android.util.Log
发送日志输出的API 一般来说,使用的Log.v()Log.d()Log.i()Log.w()和Log.e()方法。
在冗长的条款,至少大多数的顺序是ERROR,WARN,信息,调试,详细。除了在开发过程中不应该被编译成一个应用程序冗长。


调试日志的编制,是在运行,但剥离。始终坚持错误,警告和信息日志。


android.view.View
这个类表示用户界面组件的基本构建块。视图占据了屏幕上的一个矩形区域,并负责绘图和事件处理。视图是为部件的基类,用


于创建交互式UI组件(按钮,文本框等)。 ViewGroup的子类是基类的布局,这是无形的容器,持有其他意见(或其他


ViewGroups的),并定义它们的布局属性。


android.widget.Toast
当视图显示给用户,作为一个在应用程序的浮动视图显示。它永远不会获得焦点。




百度Api


核心类


BMapManager 地图引擎管理类


MKGeneralListener 一般事件通知接口
该接口返回网络状态,授权验证等结果,用户需要实现该接口以处理相应事件


VersionInfo 版本信息类


MapActivity 管理显示在MapView类中activity处理逻辑的基础类


MapView 显示地图的View
一个显示地图的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图


MapView.LayoutParams
每个子视图和MapView关联的布局信息。 子视图要么相对于MapView(MODE_VIEW)放置,要么相对于MapView(MODE_MAP)正在显


示的地图放置。




MapController 处理地图移动和缩放的工具类




GeoPoint 表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储。




Projection
该接口用来在屏幕像素x/y坐标系和地球经纬度坐标系之间进行转换,通过 MapView.getProjection()来取得映射类。




MKMapViewListener 地图显示事件监听器
该接口监听地图显示事件,用户需要实现该接口以处理相应事件




覆盖物类
Overlay
Overlay是一个基类,它表示可以显示在地图上方的覆盖overlay。 添加一个overlay时,从这个基类派生出一个子类,创建一


个实例,然后把它加入到一个列表中。这个列表通过调用MapView.getOverlays()得到。为了允许用户触摸去对齐一个点,子类


应当实现Overlay.Snappable接口。


Overlay.Snappable
Overlay的接口定义,这个overlay包含的项目可被对齐(例如,当用户触发一个缩放时,这函数可被调用允许用户把缩放框和


一个兴趣点对齐)。




OverlayItem
ItemizedOverlay的基本组件。


ItemizedOverlay
ItemizedOverlay是Overlay的一个基类,包含了一个OverlayItem列表。 从南到北的处理item,用于绘制、创建平移边界、为


每个点绘制标记点,和维护一个焦点选中的item,同时也负责把一个屏幕点击匹配到item上去,分发焦点改变事件给备选的监


听器。




ItemizedOverlay.OnFocusChangeListener
这个接口用于对item焦点变化感兴趣的监听器




服务类
MKSearch 搜索服务
用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索、公交路线详情检索




MKSearchListener 搜索结果通知接口
该接口返回poi搜索,公交搜索,驾乘路线,步行路线,公交路线详情结果


MKEvent 地图事件


MKGeocoderAddressComponent 此类表示地址解析结果的层次化地址信息


MKPoiResult poi搜索结果类
由MKSearchListener的onGetPoiResult方法获得


MKPoiInfo poi信息类


MKCityListInfo 搜索结果城市信息
搜索结果城市城市信息,包含城市名和该城市搜索结果数量


MKAddrInfo 地址信息类


MKDrivingRouteResult 驾乘路线搜索结果类
由MKSearchListener的onGetDrivingRouteResult()方法获得


MKRoutePlan 此类表示一条驾车或步行出行方案


MKRoute 此类表示一条驾乘或步行路线


MKStep 此类表示驾车或步行路线中的一个关键点


MKTransitRouteResult 公交路线搜索结果类
由MKSearchListener的onGetTransitRouteResult方法获得


MKTransitRoutePlan 公交方案详情类


MKLine 公交路段结果类


MKLPlanNode 路线结点信息类


MKWalkingRouteResult 步行路线搜索结果类
由MKSearchListener的onGetWalkingRouteResult方法获得


PoiOverlay POI内置overlay,最多显示10个POI点


TransitOverlay 公交overlay


RouteOverlay extends ItemizedOverlay<OverlayItem>


MKRouteAddrResult 路线搜索地址结果类
由MKTransitRouteResult的getAddrResult方法获得


MKBusLineResult 公交线路详情结果类
由MKSearchListener的onGetBusDetailResult()方法获得


MKSuggestionResult 在线建议搜索结果类
由MKSearchListener的onGetSuggestionResult方
法获得


MKSuggestionInfo 在线建议信息类


定位类


MKLocationManager 定位服务类。


LocationListener 定位监听器。


MyLocationOverlay 一个负责显示用户当前位置的Overlay。




离线地图类


MKOfflineMap 离线地图类(只支持老版离线地图)。


MKOfflineMapListener 离线地图事件通知接口。
该接口返回新安装离线地图、下载更新、数据版本更新等结果,用户需要实现该接口以处理相应事件


MKOLSearchRecord 离线地图搜索城市记录结构


MKOLUpdateElement 离线地图更新信息


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值