文档库 最新最全的文档下载
当前位置:文档库 › 第一行代码Android学习笔记完全版

第一行代码Android学习笔记完全版

第一行代码Android学习笔记完全版
第一行代码Android学习笔记完全版

第一行代码Android学习笔记

目录

第一章Android系统 (5)

1.1 安卓系统架构 (5)

1.2 Android 项目中的资源 (5)

第二章Activity (6)

一、创建Activity步骤: (6)

二、采用Intent切换activity (7)

1、显式Intent (7)

2、隐式Intent (7)

3、隐式Intent的其他用法 (7)

三、Intent传递数据 (8)

1、向下一个activity传递数据 (8)

2、返回数据给上一个activity (8)

四、activity的生命周期 (8)

1、活动状态 (8)

2、activity生存期 (9)

3、activity被回收数据保存 (11)

五、activity的启动模式 (11)

六、activity最佳实践 (11)

1、知道当前页面是哪一个activity (11)

2、随时随地退出程序 (11)

3、给每个activity都添加一个合适的启动方法 (13)

第三章UI (13)

一、常用控件 (13)

1、TextView (13)

2、Button (13)

3、EditText (13)

4、ImageView (14)

5、ProgressBar (14)

6、AlertDialog (14)

7、ProgressDialog (15)

二、基本布局 (15)

1、LinearLayout (15)

2、RelativeLayout (15)

3、FrameLayout (15)

4、TableLayout (15)

5、GridLayout (16)

三、自定义控件 (16)

1、添加自定义标题布局(无操作的) (16)

2、创建自定义控件 (16)

四、ListView (17)

1、最简单的Adapter (17)

2、定制ListView界面 (18)

3、提升ListView效率 (19)

4、ListView点击事件 (20)

五、单位和尺寸 (20)

六、最佳实践——聊天界面 (21)

第四章Fragment (21)

第五章BroadCast Receiver (24)

一、广播机制 (24)

二、接收系统广播 (24)

1、动态注册 (24)

2、静态注册 (25)

3、广播接收器使用注意事项 (26)

三、发送自定义广播 (26)

1、标准广播 (26)

2、有序广播 (27)

四、发送和接收本地广播 (27)

五、强制下线 (27)

注意事项: (27)

一、文件存储 (28)

1、存储5部曲: (29)

2、读取5部曲: (29)

二、SharedPreferences存储 (31)

1、存储4部曲 (31)

2、读取2部曲 (31)

三、SQLite数据库 (31)

1、创建数据库 (31)

2、升级数据库 (32)

3、添加数据 (33)

4、更新数据 (33)

5、删除数据 (33)

6、查询数据 (33)

7、直接使用SQL操作数据库 (33)

四、数据库最佳实践 (34)

1、使用事务 (34)

2、升级数据库最佳写法 (35)

第七章Content Provider (36)

一、简介 (36)

二、访问已有的CP (36)

1、ContentResolver用法 (36)

2、读取系统联系人 (37)

三、创建自己的ContentProvider (38)

1、创建CP步骤5部曲 (38)

四、跨程序数据共享实践 (40)

附录:Git使用 (41)

一、创建代码仓库 (41)

二、提交本地代码 (42)

三、忽略文件 (42)

四、查看修改内容 (42)

五、撤销未提交的修改 (43)

六、查看提交记录 (44)

第八章多媒体 (44)

一、通知 (44)

1、通知创建 (44)

2、通知点击事件 (45)

3、通知的其他属性 (46)

二、短信 (46)

1、接收短信 (46)

2、拦截短信 (46)

3、发送短信 (46)

三、调用摄像头和相册 (46)

四、播放多媒体 (46)

一、Service介绍 (46)

二、多线程 (47)

1、线程基本用法 (47)

2、在子线程中更新UI (47)

3、异步消息处理机制 (48)

4、AsyncTask (49)

三、Service (50)

1、定义Service (50)

2、启动和停止Service (51)

3、Activity与Service通信 (51)

四、Service的生命周期 (53)

五、Service更多技巧 (53)

1、前台Service (53)

2、傻瓜方式使用Service—IntentService (54)

六、后台执行的定时任务 (54)

第十章网络技术 (56)

一、WebView (56)

二、使用HTTP协议访问网络 (56)

1、使用HttpURLConnection (56)

2、使用HttpClient (59)

三、解析XML格式数据 (61)

1、Pull解析方式 (61)

2、SAX解析方式 (63)

四、解析JSON格式数据 (64)

1、JSONObject (64)

2、GSON (65)

五、网络编程最佳实践——java的回调机制 (66)

第十一章LBS (68)

附录:Git的高级用法 (69)

一、分支用法 (69)

二、与远程版本库协作 (70)

第十二章传感器 (71)

第十三章Android高级技巧 (71)

一、全局获取Context的技巧 (71)

二、使用Intent传递对象 (72)

1、Serializable方式 (72)

2、Parcelable方法 (72)

三、定值自己的日志工具 (73)

四、调试Android程序 (74)

五、编写测试用例 (74)

1、创建测试工程 (74)

2、进行单元测试 (75)

第十四章实战 (75)

第一章Android系统

1.1 安卓系统架构

Linux Kernel: 各种底层驱动

Libraries : Runtime Libraries, Dalvik VM, 各种库支持,数据库,3D绘图,浏览器内核Application Framework: API,各种manager

Applications

1.2 Android 项目中的资源

src: 各种java程序在此,包括主程序

gen: 最重要的是R.java,所有res资源都在这里编号,通过R.xx.xx或@xx查询res: 各种资源都在这里,包括drawable, layout, values等

另外还有menifest文件,统筹兼顾全局的,Android四大组件都要在此注册。

第二章Activity

Activity是包含用户界面的组件,用于和用户进行交互。

一、创建Activity步骤:

1、首先,创建没有Activity的application,发现src文件夹是空的。手动创建一个包com.example.demo1activity,在包中添加一个class,MainActivity.java。

要使用activity,extents Activity。此时,重写Activity的onCreate()方法。

2、此时,只有activity,用户是不可见的。因此,需要在上面添加layout和view。在res layout 中添加一个Android XML file,可以在该xml文件中创建布局。添加诸如TextView/Button 等常用控件。

3、此时,需要将创建的layout文件加载到activity中,在第一步创建的MainActivity中onCreate()方法中,使用setContentView(https://www.wendangku.net/doc/d011104213.html,yout.myactivity)将布局加载进来。

4、所有四大组件的使用,都需要在AndroidManifest.xml文件中注册。

注册方法为:

中添加标签,将需要注册的activity使用android:name=".MainActivity"注册。如果是主activity,即打开application时看到的activity,则需要添加

总体注册代码为:

android:name=".MainActivity"

android:label="My App">

5、销毁activity

finish();

二、采用Intent切换activity

1、显式Intent

首先,按照上面的步骤重新创建一个SecondActivity(记得注册),采用Intent实现跳转

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivity(intent);

2、隐式Intent

隐式Intent并不能实现直接跳转,需要指定两个条件(intent-filter):action和category。

如果在intent-filter中指定category为default的category,即android.intent.category.DEFAULT,则只需满足action条件即可。

intent-filter在注册activity时添加,注册方法如下:

跳转方法为:

Intent intent=new Intent("com.example.demo1activity.SECOND_START");

startActivity(intent);

intentfilter中只能有一个action,但可以有多个category,满足其中一个category即可。3、隐式Intent的其他用法

使用隐式intent,不但可以打开自己编写的activity,还可以打开系统编写的activity,比如浏览器,打电话等。

打开浏览器:

Intent intent=new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse("https://www.wendangku.net/doc/d011104213.html,"));

startActivity(intent);

解释:

Intent.ACTION_VIEW是系统内置的动作,打开浏览器;

setData()将一个Uri对象传入intent,用于指定该intent正在操作的数据,这些数据都是用Uri.parse()将字符串转换为Uri产生的。

在intent-filter中,添加标签,用于精确指定该activity能响应的数据类型,包括android:scheme用于指定数据的协议部分,比如http。

该方法还可以打电话、显示地理位置等。

三、Intent传递数据

1、向下一个activity传递数据

在头一个activity中,使用putExtra()将数据传入intent

在下一个activity中,使用getIntent()获得传递来的intent,然后使用getStringExtra()获得传递来的数据。

2、返回数据给上一个activity

在上一个activity中,不采用startActivity(),而采用startActivityForResult(intent, 1)。其中,1为requestCode,用于之后判断是不是自己发送出去的intent。

在下一个activity中,建立新的intent,然后将data利用intent.putExtra()放入intent,setResult(RESULT_OK, intent)放置result,其中RESULT_OK为resultcode,用于在上一个activity中分辨是哪一个activity返回的数据。最后,finish()。

之后,在上一个activity中,重写onActivityResult()方法。

同样的,如果在第二个activity中,是按返回键返回的,可以在第二个activity中,重写onBackPressed()方法返回数据,方法同上。

四、activity的生命周期

1、活动状态

运行状态:在栈顶时

暂停状态:不可操作,但可见

停止状态:完全不可见

销毁状态:从栈中被移除

2、activity生存期

完整生存期:onCreate()→onDestory() 可见生存期:onStart()→onStop()

前台生存期:onResume()→onPause()

Activity

被销毁

3、activity被回收数据保存

activity中提供了一个onSaveInstanceState()的方法,该方法会携带一个bundle类型参数,bundle可以保存各种信息。

protected void onSaveInstanceState(Bundle outState) {

// TODO Auto-generated method stub

super.onSaveInstanceState(outState);

String savedata="hello you";

outState.putString("saved", savedata);

}

如何恢复数据呢?

在onCreate()方法中,传入的参数为Bundle savedInstanceState,利用这恢复数据。

String data=savedInstanceState.getString(―saved‖);

五、activity的启动模式

四种启动模式,可以在标签中android:launchMode定义。

standard:打开activity,就放入栈顶

singleTop:打开activity,检查栈顶是否已经存在该activity,存在了就不创建。不存在才创建。不过,如果该activity不在栈顶,但也存在,则也会重新创建一个。

singleTask:检查整个返回栈,如果存在某个activity,则不会重新创建。

singleInstance:创建一个activity,重新在一个新的返回栈(或Task)中创建,该activity与其他activity不在同一个Task中,其他程序也可以调用这个activity的实例。

六、activity最佳实践

1、知道当前页面是哪一个activity

新建一个BaseActivity extents Activity,其中在onCreate()中打印该activity的信息

Log.i(―BaseActivity‖,getClass().getSimpleName()); //获得类名

然后,所有activity都extents BaseActivity即可

2、随时随地退出程序

当打开很多activity之后,退出程序需要一直按Back,很麻烦。

首先,新建一个activity管理类,实现所有的activity的添加、删除和finish()。

public class ActivityCollector {

public static List activities=new ArrayList();

public static void addActivity(Activity activity)

{

activities.add(activity);

}

public static void removeActivity(Activity activity)

{

activities.remove(activity);

}

public static void finishAll()

{

for(Activity activity:activities)

{

if(!activity.isFinishing())

{

activity.finish();

}

}

}

}

然后,修改BaseActivity,在onCreate()中添加this,onDestory()中移除this protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

Log.i("BaseActivity", getClass().getSimpleName());

ActivityCollector.addActivity(this);

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

ActivityCollector.removeActivity(this);

}

3、给每个activity都添加一个合适的启动方法

比如我需要启动一个SecondActivity,可是不知道该activity需要哪些参数,怎么办?

在SecondActivity中添加一个启动自己的方法:

public class SecondActivity extends Activity

{

public static void startActivity(Context contex, String data1, String data2)

{

Intent intent = new Intent(context, SecondActicity.class);

intent.putExtra(―param1‖, data1);

intent.putExtra(―param2‖, data2);

startActivity(intent);

}

}

在SecondActivity中添加了startActivity()方法之后,在任意的activity中启动SecondActivity,都可以调用该方法,而且知道需要传入哪些参数。

比如在MainActivity中启动方法为:

SecondActivity.startActivity(MainActivity.this, ―data1‖, ―data2‖);

第三章UI

一、常用控件

1、TextView

2、Button

3、EditText

密码:android:password=‖true‖

4、ImageView

5、ProgressBar

设置其进度

progress=bar.getProgress();

progress+=10;

bar.setProgress(progress);

if(progress==100)

{

bar.setVisibility(View.GONE);

}

6、AlertDialog

AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);

dialog.setTitle("确认删除");

dialog.setMessage("你确认删除么?");

dialog.setCancelable(false);

dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "已经删除", Toast.LENGTH_SHORT).show();

}

});

dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "已经取消",

Toast.LENGTH_SHORT).show();

}

});

dialog.show();

7、ProgressDialog

和AlertDialog类似,只是内容为一个进度条。

进度加载完成之后,必须使用dismiss()来关闭对话框。

二、基本布局

1、LinearLayout

android:gravity 指定文字在控件中的对齐方式

android:layout_gravity: 指定控件在布局中的对齐方式

android:layout_weight: 按比例分配控件大小

2、RelativeLayout

3、FrameLayout

4、TableLayout

android:layout_span=‖2‖ 将两列合并为一列

在TableRow中无法指定控件的宽度,通过android:stretchColumns=‖1‖,指定将第二列拉伸到最大。

5、GridLayout

三、自定义控件

Android中,控件和布局的继承结构如下图:

1、添加自定义标题布局(无操作的)

自定义一个布局title.xml,然后在mainactivity布局中引入

当然,需要将系统自带标题栏屏蔽

requestWindowFeature(Window.FEATURE_NO_TITLE);

2、创建自定义控件

上面方法自定义的标题栏并不能响应操作,采用自定义控件方法来实现操作。(1)首先,构建一个title.xml布局文件

(2)然后,构建一个自定义标题控件TitleLayout:

利用LayoutInflater动态加载布局文件title.xml。

public class TitleLayout extends LinearLayout{

public TitleLayout( Context context, AttributeSet attrs) {

super(context, attrs);

LayoutInflater.from(context).inflate(https://www.wendangku.net/doc/d011104213.html,yout.title, this);

Button edit=(Button) findViewById(R.id.title_edit);

Button back=(Button) findViewById(R.id.title_back);

edit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Toast.makeText(getContext(), "Edit", Toast.LENGTH_SHORT).show();

}

});

back.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Toast.makeText(getContext(), "Back", Toast.LENGTH_SHORT).show();

}

});

}

}

(3)如同加入其它的控件一样,将该自定义的控件添加到mainactivity.xml文件中

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

四、ListView

1、最简单的Adapter

要将数据放置在ListView中,都需要一个adapter转换。

一个最简单的adapter,就是把一个字符串数组放置在ListView中。

ArrayAdapter接收3个参数:context,ListView单个子项布局id和数据。

listView=(ListView) findViewById(R.id.listView1);

ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,

https://www.wendangku.net/doc/d011104213.html,yout.simple_list_item_1, data);

listView.setAdapter(adapter);

2、定制ListView界面

只显示文字很单调,需要显示图片等,则需要构建自定义的布局。

(1)数据:Fruit类

首先准备需要适配的数据,数据包括文字、图片id,定义一个Fruit类存放这些数据。(2)子项布局:fruit_layout.xml

之后,需要自定义ListView中单个子项的布局。本例中就是一个图片加上一个文字。(3)自定义适配器:FruitAdapter.java

该适配器中,最重要的是getView()方法。该方法在每个子项滚动到屏幕内时被调用。position是该子项的位置,利用getItem(position)可以获得当前的Fruit实例fruit;

然后,利用LayoutInflater可以加载布局为fruit_layout的布局view;

该布局view即为步骤(2)中自定义的布局,通过view.findViewById()可以获得ImageView和TextView。

最后,将fruit中的imageId和name传入ImageView和TextView。

public class FruitAdapter extends ArrayAdapter{

private int resourceId;

public FruitAdapter(Context context, int resource, List objects) {

super(context, resource, objects);

resourceId=resource;

}

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

Fruit fruit=getItem(position);

View view=LayoutInflater.from(getContext()).inflate(https://www.wendangku.net/doc/d011104213.html,yout.fruit_layout, null);

TextView fruit_name=(TextView) view.findViewById(R.id.fruit_name);

ImageView fruit_image=(ImageView) view.findViewById(R.id.fruit_image);

fruit_image.setImageResource(fruit.getImageId());

fruit_name.setText(fruit.getName());

return view;

}

}

(4)使用

List fruits=new ArrayList();

FruitAdapter adapter=new FruitAdapter(MainActivity.this, https://www.wendangku.net/doc/d011104213.html,yout.fruit_layout, fruits);

在fruits中添加数据。

3、提升ListView效率

getView()每次都将布局重新加载一遍,效率很低。处理方法为:

(1)convertView

convertView将之前加载好的布局进行缓存,以便之后重用。则可以不必每次都使用LayoutInflater重新加载布局,而直接加载缓存的布局。

if(convertView==null)

view=LayoutInflater.from(getContext()).inflate(https://www.wendangku.net/doc/d011104213.html,yout.fruit_layout, null);

else

view=convertView;

(2)ViewHolder

每次都使用findViewById获取控件,效率低下。

使用convertView将之前已经find的view也一起缓存。

View有setTag()和getTag()方法,分别进行数据写入和读取。

采用自定义的ViewHolder类,将多个参数一起管理,比如TextView/ImageView等。

public class FruitAdapter extends ArrayAdapter {

public FruitAdapter(Context context, int resource, List objects) {

super(context, resource, objects);

resourceId = resource;

}

private int resourceId;

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

Fruit fruit = getItem(position);

View view;

ViewHolder viewHolder;

if (convertView == null) {

viewHolder = new ViewHolder(); //一定要记住实例化对象啊

view = LayoutInflater.from(getContext()).inflate(

https://www.wendangku.net/doc/d011104213.html,yout.fruit_layout, null);

viewHolder.fruit_image = (ImageView) view

.findViewById(R.id.fruit_image);

viewHolder.fruit_name=(TextView) view.findViewById(R.id.fruit_name);

view.setTag(viewHolder);

} else {

view = convertView;

viewHolder = (ViewHolder) view.getTag();

}

viewHolder.fruit_image.setImageResource(fruit.getImageId());

viewHolder.fruit_name.setText(fruit.getName());

return view;

}

class ViewHolder {

ImageView fruit_image;

TextView fruit_name;

}

}

4、ListView点击事件

注册setOnItemClickListener()事件:

listView.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView parent, View view,

int position, long id) {

Fruit fruit=fruits.get(position);

Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();

}

});

五、单位和尺寸

px: 像素

pt:磅数,1pt=1/72inch

dp:密度无关像素

密度dpi:屏幕每inch包含的像素数。

获取当前屏幕密度值:

float xdpi=getResources().getDisplayMetrics().xdpi;

android studio 控件常用属性

android studio 控件常用属性 下面是RelativeLayout各个属性 1.android:layout_above="@id/xxx" --将控件置于给定ID控件之上 2.android:layout_below="@id/xxx" --将控件置于给定ID控件之下 3. android:layout_toLeftOf="@id/xxx" --将控件的右边缘和给定ID控件的左边缘对齐 4.android:layout_toRightOf="@id/xxx" --将控件的左边缘和给定ID控件的右边缘对齐 5. android:layout_alignLeft="@id/xxx" --将控件的左边缘和给定ID控件的左边缘对齐 6.android:layout_alignTop="@id/xxx" --将控件的上边缘和给定ID控件的上边缘对齐 7.android:layout_alignRight="@id/xxx" --将控件的右边缘和给定ID控件的右边缘对齐 8.android:layout_alignBottom="@id/xxx" --将控件的底边缘和给定ID控件的底边缘对齐 9.android:layout_alignParentLeft="true" --将控件的左边缘和父控件的左边缘对齐 10. android:layout_alignParentTop="true" --将控件的上边缘和父控件的上边缘对齐 11. android:layout_alignParentRight="true" --将控件的右边缘和父控件的右边缘对齐 12.android:layout_alignParentBottom="true" --将控件的底边缘和父控件的底边缘对齐 13.android:layout_centerInParent="true" --将控件置于父控件的中心位置 14.android:layout_centerHorizontal="true" --将控件置于水平方向的中心位置 15.android:layout_centerVertical="true" --将控件置于垂直方向的中心位置 android:layout_width 设置组件的宽度 android:layout_height 设置组件的高度 android:id 给组件定义一个id值,供后期使用 android:background 设置组件的背景颜色或背景图片 android:text 设置组件的显示文字 android:textColor 设置组件的显示文字的颜色 android:layout_below 组件在参考组件的下面 android:alignTop 同指定组件的顶平行

Android界面开发之常用系统控件界面大合集

今天我用自己写的一个Demo 和大家详细介绍一个Android开发中遇到的一些常用系统控件的使用技巧。 1.文本框TextView TextView的作用是用来显示一个文本框,下面我用两种方式为大家呈现TextView,第一种是通过xml布局文件

呈现,第二种是通过代码来呈现,由此可见Android 的界面开发真的是非常灵活。 view plaincopy to clipboardprint? 1. public class TextViewActivity extends Activity { 2. @Override 3. protected void onCreate(Bundle savedInstanceState) { 4. setContentView(https://www.wendangku.net/doc/d011104213.html,yout.textview);

5. 6. LinearLayout ll = (LinearLayout) findViewById(R.id.textviewll); 7. TextView textView = new TextView(this); 8. //设置显示文字 9. textView.setText("从代码中添加一个TextView"); 10. //设置显示颜色 11. textView.setTextColor(Color.WHITE); 12. //设置显示字体大小 13. textView.setTextSize(18); 14. //设置显示背景颜色 15. textView.setBackgroundColor(Color.BLUE); 16. //设置锚点位置 17. textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.CE NTER_HORIZONTAL); 18. //把这个view加入到布局当中 19. ll.addView(textView); 20. 21. super.onCreate(savedInstanceState); 22. } 23. } 1. 2.

Android开发日志—常用控件篇(android简介和容器控件)

Android开发日志—常用控件篇(容器控件) android简介: Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。 Android的系统架构和其操作系统一样,采用了分层的架构。 Android结构 从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 隐藏在每个应用后面的是一系列的服务和系统, 其中包括; 丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons),甚至可嵌入的web 浏览器。 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。 Android开发四大组件分别是:活动(Activity):用于表现功能。服务(Service):后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider):支持在多个应用中存储和读取数据,相当于数据库。 活动(当前界面视图):

Android常用控件

《Android基础应用》 Android常用控件 ?本章任务 ?使用Android开发使用时间组件 ?使用Android开发使用进度条组件 ?使用Android开发创建底部选项卡 ?本章目标 ?了解Android的组件层次结构 ?掌握常用的日期时间类控件 ?掌握常用的几个容器组件 1.Android组件的层次结构 UI组件都是View的子类,View有很多子类,它们之间存在树状的继承关系View及其子类结构图

TextView及其子类结构图

ViewGroup及其子类结构图 其下的子类一般作为容器或布局来使用 FrameLayout及其子类结构图 其下的子类通常作为容器或布局来使用

2.时间控件 2.1日期时间选择器 DatePicker组件可用于输入日期,TimePicker组件可用来选择时间,只能输入小时和分,默认12小时制 DatePicker ●使用onDateChangedListener监听器来获取用户的日期选择 ●使用init对组件进行初始化 ●使用getYear,getMonth,getDayOfMonth方法获得用户选择的年,月,日 TimePicker ●使用onTimeChangedListener监听器获取用户的时间选择 ●使用setIs24HourView设置是否以24小时制显示 ●使用getCurrentHour获得当前的小时数 ●使用getCurrentMinute获得当前的分钟数 示例

示例的实现结果

2.2时钟组件 AnalogClock组件用来以表盘的方式显示当前时间,该表只有时针和分针,DigitClock组件以数字的方式显示当前时间可以显示时分秒,由于DigitClock继承TextView,可以使用TextView 的属性 示例

android常用控件大全

android常用控件大全 在Android中使用各种控件(View) DatePicker-日期选择控件 TimePicker-时间选择控件 ToggleButton-双状态按钮控件 EditText-可编辑文本控件 ProgressBar-进度条控件 SeekBar-可拖动的进度条控件 AutoCompleteTextView-支持自动完成功能的可编辑文本控件 MultiAutoCompleteTextView-支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开) ZoomControls-放大/缩小按钮控件 Include-整合控件 VideoView-视频播放控件 WebView-浏览器控件 RatingBar-评分控件 Tab-选项卡控件 Spinner-下拉框控件 Chronometer-计时器控件 ScrollView-滚动条控件 在Android中使用的Layout FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角 LinearLayout:里面可以放多个控件,但是一行只能放一个控件

TableLayout:这个要和TableRow配合使用,很像html里面的table AbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的x,y的位置 RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置 (Android界面布局好像还可以直接引用一些view,如ScrollView等) 常用控件: 1,EditText 主要函数:setText/getText设置/获取文本内容,setHint设置缺省显示内容; 2,RadioGroup,RadioButton RadioButton的isChecked()判断是否被选中 获取选中RadioButon的ID:设置 RadioGroup.setOnCheckedChangeListener方法 publiconCheckedChanged(RadioGroupgroup,intcheckedId)//checkedId 是选中RadioButton的ID 3,CheckBox isChecked()判断是否被选中 setOnCheckedChangeListener方法监视选中状态改变情况 4,Spinner a,显示数据 1),硬编码加载 通过setAdapter方法设置类型为 ArrayAdapter(Contextcontext,inttextViewResId,String[]objects) textViewResourceId:显示内容的ViewID默认设置为 https://www.wendangku.net/doc/d011104213.html,yout.simple_spinner_item

实验二 android基本控件实验

实验二 android基本控件实验 【目的】 熟悉Android常用控件的基本操作,掌握它们的基本使用方法。了解控件之间的构成关系,熟悉适配器的使用原理。 【要求】 1、了解控件的继承关系; 2、掌握适配器的使用; 3、掌握信息提示的实现机制; 4、实现基本界面。 【原理】 1.控件类之间的关系 android.view.View类(视图类)呈现了最基本的UI构造块。View类是Android中的一个超类,几乎包含了所有的屏幕类型,主要负责绘制和事件处理。 Android中控件类的扩展结构如图所示。 View有众多的扩展者,它们大部分是在android.widget包中,这些继承者实际上就是Android 系统中的“控件”。View实际上就是各个控件的基类,创建交互式的图形用户界面的基础。View的直接继承者包括文本视图(TextView)、图像视图(ImageView)、进度条(ProgressBar)等。它们各自又有众多的继承者。每个控件除了继承父类功能之外,一般还具有自己的公有 方法、保护方法、XML属性等。 在Android中使用各种控件的一般情况是在布局文件中可以实现UI的外观,然后在Java文件中实现对各种控件的控制动作。控件类的名称也是它们在布局文件XML中使用的标签名称。

2.控件通用行为和属性 View是Android中所有控件类的基类,因此View中一些内容是所有控件类都具有的通用行为和属性。 提示:由于Java语言不支持多重继承,因此Android控件不可能以基本功能的“排列组合”的方式实现。在这种情况下,为了实现功能的复用,基类的功能往往做得较强,作为控件的祖先类,View所实现的功能也是最多的。 控件类经常在布局文件中使用,因此其可以使用XML属性(XMLAttributes),和Java代码经常具有对应关系。 View作为各种控件的基类,其XML属性所有控件通用,XML属性及其对应的方法如表1所示。 表1 View中的XML属性及其对应的方法 其中,android:id表示控件的标识,通常需要在布局文件中指定这个属性。View中与控件标识相关的几个方法如下所示: public int getId() // 获得控件的id(int类型)

android 控件常用属性

第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘 android:layout_alignParentTop 贴紧父元素的上边缘 android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物 第二类:属性值必须为id的引用名“@id/id-name” android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边 android:layout_toRightOf 在某元素的右边 android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐 android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐 android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐 第三类:属性值为具体的像素值,如30dip,40px android:layout_marginBottom 离某元素底边缘的距离 android:layout_marginLeft 离某元素左边缘的距离 android:layout_marginRight 离某元素右边缘的距离 android:layout_marginTop 离某元素上边缘的距离 EditText的android:hint 设置EditText为空时输入框内的提示信息。

Android控件常见的属性

一、TextView控件常见的属性

二、EditText是可编辑的文本框,继承自TextView,因此属性基本相同。EditText中的文字可以编辑而TextView只显示文字,其中的文字不能编辑。EditText和TextView类似于C#中的Label和TextBox控件。 三、Button也继承自TextView,因此也具有TextView的宽和高设置,文字显示等一些基本属性。Button一般会与单击事件联系在一起。为Button注册单击事件有两种方法: 1.通过Button控件的setOnClickListener()方法为Button 注册OnClickListener。 2.通过使用android:OnClick属性在xml布局文件中为Button 指定单击事件发生时执行的函数。

当用户点击了Button时,Android系统调用activity的selfDestruct(View view)方法。指定的这个方法必须是public的,而且只有一个View类型的参数。例如: TextView、EditText、Button都可以用setText()方法设置控件中文本的值,也都可以用getText()获取的控件的文本值。需要注意的是EditText的getText()方法返回的是Editable对象。这个对象与string对象差不多,区别是:当我们修改了一个string对象的值后会返回一个新的string对象。因为string对象不能修改,所以返回新的对象。而Editable可以修改即返回的是它本身,因此在修改的时候不必创建新的对象,节约了内存。可以用getText().toString()方法将获得的Editable对象转换为string。 四、Menu Menu 控件不需要添加在xml布局文件中,需要在Activity中复写onCreateOptionsMenu(Menu menu)方法,当我们在模拟器或者在手机

Android中常用控件List、View

Android中常用控件 ListView ListVeiw 用来展示列表的View。 使用ListView时与之相关的两个要素:适配器和数据。 适配器用来把数据映射到ListView上的中介。 数据具体的将被映射的字符串,图片,或者基本组件。 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。 ◆适配器之ArrayAdapter private ListView listView=null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.wendangku.net/doc/d011104213.html,yout.main); ListView lv=(ListView)this.findViewById(R.id.listView1); lv.setAdapter(new ArrayAdapter(this,https://www.wendangku.net/doc/d011104213.html,yout.simple_list_item_1,dtS ource())); } //数据源 public List dtSource(){ List list=new ArrayList(); list.add("jack"); list.add("rose"); return list; } lv.setAdapter(new ArrayAdapter(this,https://www.wendangku.net/doc/d011104213.html,yout.simple_list_item_1,dtS ource()));

android开发常用控件及布局

一、开发概述 Android的控件体系分为三个类别: 1、基本控件 2、布局 3、容器 这三类控件主要分布在两个包中: 1、android.view 提供抽象接口 2、android.widget 提供系统内置的大部分控件 整个系统得控件都继承自android.view.View ,而布局及容器类继承自android.view.ViewGroup。 基本控件主要包括ImageView、ProgressBar、SurfaceView、TextView、EditText等。 布局 虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局 的结构,而是每种Layout就是一中特殊的面板,包括AbsoluteLayout、Fram eLayout、 LinearLayout、TableLayout、RelativeLayout等。 容器 这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListView、GridView、Gallery、 Spinner等。 二、android常用控件 android常用控件之TextView、EditView、Button、Menu 示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。 当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。 项目运行效果图: 开发步骤: 1、新建一个Android项目 2、在布局文件中依次添加EditText、TextView、EditText、Button(一定要按照界面 上控件显示的顺序在布局文件中添加) 3、再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout 和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加, 新建的布局文件默认为空,所以需要手动添加) 4、编写第一个Activity a) 让Activity继承android的Activity b) 重写Activity的onCreate()方法 c) 设置这个Activity的布局文件 d) 根据控件id获得控件对象 e) 设置控件的值,这个值引用的是string.xml中的值,所以还需要在string.xml文件中 设置(最好是使用string.xml中的值,以便实现国际化);这个在布局文件中也能设置; 5、新建一个Activity,ResultActivity a) 让Activity继承android的Activity b) 重写Activity的onCreate()方法 c) 设置这个Activity的布局文件 d) 根据控件id获得控件对象 6、在第一个Activity中编写Button的监听器

android常用系统界面控件使用大合集

常用系统控件界面大合集 今天我用自己写的一个Demo 和大家详细介绍一个Android开发中遇到的一些常用系统控件的使用技巧。 1.文本框TextView TextView的作用是用来显示一个文本框,下面我用两种方式为大家呈现TextView,第一种是通过xml布局文件呈现,第二种是通过代码来呈现,由此可见Android 的界面非

常灵活。 1.public class TextViewActivity extends Activity { 2. @Override 3. protected void onCreate(Bundle savedInstanceState) { 4. setContentView(https://www.wendangku.net/doc/d011104213.html,yout.textview); 5. 6. LinearLayout ll = (LinearLayout) findViewById(R.id.textviewll); 7. TextView textView = new TextView(this); 8. //设置显示文字 9. textView.setText("从代码中添加一个TextView"); 10. //设置显示颜色 11. textView.setTextColor(Color.WHITE); 12. //设置显示字体大小 13. textView.setTextSize(18); 14. //设置显示背景颜色 15. textView.setBackgroundColor(Color.BLUE); 16. //设置锚点位置 17. textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_ HORIZONTAL);

android常用控件及布局

一、概述 Android的控件体系分为三个类别: 1、基本控件 2、布局 3、容器 这三类控件主要分布在两个包中: 1、android.view 提供抽象接口 2、android.widget 提供系统内置的大部分控件 整个系统得控件都继承自android.view.View ,而布局及容器类继承自android.view.ViewGroup。 基本控件主要包括ImageView、ProgressBar、SurfaceView、TextView、EditText等。 布局 虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局 的结构,而是每种Layout就是一中特殊的面板,包括AbsoluteLayout、FrameLayout、 LinearLayout、TableLayout、RelativeLayout等。 容器 这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListView、GridView、Gallery、 Spinner等。 二、android常用控件 android常用控件之TextView、EditView、Button、Menu 示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。 当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。 项目运行效果图: 开发步骤: 1、新建一个Android项目 2、在布局文件中依次添加EditText、TextView、EditText、Button(一定要按照界面 上控件显示的顺序在布局文件中添加) 3、再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout 和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加, 新建的布局文件默认为空,所以需要手动添加) 4、编写第一个Activity a) 让Activity继承android的Activity b) 重写Activity的onCreate()方法 c) 设置这个Activity的布局文件 d) 根据控件id获得控件对象 e) 设置控件的值,这个值引用的是string.xml中的值,所以还需要在string.xml文件中 设置(最好是使用string.xml中的值,以便实现国际化);这个在布局文件中也能设置; 5、新建一个Activity,ResultActivity a) 让Activity继承android的Activity b) 重写Activity的onCreate()方法 c) 设置这个Activity的布局文件 d) 根据控件id获得控件对象 6、在第一个Activity中编写Button的监听器

Android 控件布局常用属性

Android 控件布局常用属性 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘 android:layout_alignParentTop 贴紧父元素的上边缘 android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物 第二类:属性值必须为id的引用名“@id/id-name” android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边 android:layout_toRightOf 在某元素的右边 android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐 android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐 android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐 第三类:属性值为具体的像素值,如30dip,40px android:layout_marginBottom 离某元素底边缘的距离 android:layout_marginLeft 离某元素左边缘的距离 android:layout_marginRight 离某元素右边缘的距离 android:layout_marginTop 离某元素上边缘的距离 EditText的android:hint 设置EditText为空时输入框内的提示信息。 android:gravity android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右

android常用控件属性方法事件说明

1,TextView用于在界面上显示文字,内容不可编辑,继承View 2,EditText是可供用户编辑内容的文本框。继承TextView,可重用TextView定义的属性

3,按钮控件Button,继承TextView,ImageButton继承ImageView Button可根据用户的操作动态切换图片,需定义drawable资源 4,单选按钮RadioButton继承至Button按钮。可通过android:checked属性指定是否选中。 一组RadioButton只能选择其一,因此它需要与RadioGroup一起使用。 5,复选框按钮CheckBox。继承至Button按钮。可通过android:checked属性指定是否选中 7,AnalogClock继承View,重写了onDraw()方法。显示模拟时钟,不会显示当前的秒数。 DigitalClock继承TextView.显示数字时钟,会显示当前秒数。 8,图片显示控件ImageView,继承View,任何Drawable对象都可以用它来显示,注意src 属性和background属性的区别

相关文档
相关文档 最新文档