




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
窗体底端Android常用控件总结第一章1.1 Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw) R.java是在创建项目是自动生成的只读文件,不可更改此文件。R文件其作用:是定义项目中所有资源的索引文件。1.2 AndroidManfest.xml 如下: /使用SDK版本号 /应用程序名字 / /描述了Activity的启动时间和位置,另外为了支持查找Activity可以包含一个或多个 /acton 为组件支持的Intent action /categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity /在此对新增的Activity进行注册。如果在不同的包中注意声明是将包名带上 1.3 String.xml如下: /此处定义了两个字符串资源,即定义了app_name,hello常量 Hello World, SummaryActivity! Summary 如何使用这个资源呢?如下: Resources r = this.getContext().getResources(); /通过Context的getResource()实例化一个Resources对象 String app_name = (String)r.getString(R.string.app_name); /然后通过getString()方法取得指定的索引的字符串。项目中所有常量都可以在String.xml文件中定义 String hello = (String)r.getString(R.string.hello);1.4 main.xml如下: 1.5 src下的java 如下: package Android.Summary; import android.app.Activity; import android.os.Bundle; public class SummaryActivity extends Activity /继承自Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) /重写onCreate()方法 super.onCreate(savedInstanceState); setContentView(R.layout.main); /设置要显示的布局 第二章2.1 Android应用程序由四个模块组成:Activity,Service,Intent,ContentProvider(注意:一个应用程序不一定包含全部的四个模块). 在使用时必须在AandroidManfest中进行声明。 Activity可以理解为用户看到屏幕,主要用于处理应用程序的整体性工作。如: a.监听系统事件,触屏事件,为用户显示指定的View,启动其他Activity等。 b.所有应用的Activity都继承于android.app.Activity,该类是Android提供的基层类。 c.一个Activity通常就是一个单独的屏幕。 d.每一个活动都被实现为一个独立的类。 e.大多数的应用程序都是由多个Activity组成。 Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。在Intent的描述结构中,有两个重要的部分:动作和对应的数据。 典型的动作有MAIN,VIEW,PICK,EDIT.而动作对应的数据则以URI的形式表示。例如:要查一个人的联系方式,需要创建一个动作类型View的Intent ,以及一个表示这个人的URI. Intent的使用: button1.setOnClickListener(new Button.OnClickListener() public void onClick(View v) Intent intent = new Intent(); /创建一个Intent对象 intent.setClass(Activity01.this,Activity02.class);/指明要启动的另一Activity02 startActivity(intent); /启动一个新的Activity Activity01.this.finish(); /关闭当前Activity01 ); 这里需要注意在Android中对新启动的Activity进行声明。声明方式: /注意:如果在不同的包中在声明是还要加上包名 IntentReceiver 如果希望Android应用能够对外部事件(如电话打入时,数据网络可用时,)做出响应,可用使用IntentReceiver.虽然IntentReceiver在如上事件发生 时会使用NotificationManager通知用户,但它并不能生产UI。IntentReceiver可以在AndroidManifest.xml中注册,也可在代码中使用Context.registerReceiver 进行注册。当IntentReceiver被触发时,系统会在需要的时候启动应用。各种应用还可以通过ContentReceiver()将他们自己的IntentReceiver广播出去。 ? Content Provider 作用:主要用于不同应用程序中的数据的传递。 Content Provider 是一个特殊的存储数据的类型。 Android自身提供现成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider,然后可以用ContentResolver提供的方法来使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。 URI-String形式的Content Provider的完整路径。 下面这个这个例子通过ContentProvider获取电话本中的数据,然后显示到TextView中去。 public class Activity01 extends Activity public void onCreate(Bundle savedInstanceState) TextView textView = new TextView(this);/得到TextView对象 String string = ; super.onCreate(savedInstanceState); ContentResolver resolver = getContentResolver();/得到ContentResolver对象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);/取得电话本中开始一项的光标,通过query方法查询出符合标准的电话本记录 /向下移动光标 while(cursor.moveToNext() /取得联系人名字 int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); String name = cursor.getString(name_index); /取得电话号码 int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER); String number = cursor.getString(number_index); string +=(name+:+number+n); cursor.close(); textView.setText(string);/设置TextView显示的内容 setContentView(textView);/显示到屏幕上 其实TextView也是View的一种 注意:在使用这些模块中用到了读取联系人的API,所以必须在AndroidManifest.xml中声明 声明方式为: Service 后台服务,没有界面 启动service方法: a.Context.startService() b.Context.bindService()/与上一种方法不同处 如果这个Service没有处于启动状态,则将其启动 下面这个例子以Activity中的俩个控件来控制播放一首Mp3. (例中:需要在res文件夹中创建一个raw文件夹 然后放入一首MP3) public class Activity01 extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /从main.xml布局中获得Button对象 Button button_start = (Button)findViewById(R.id.start); Button button_stop = (Button)findViewById(R.id.stop); /设置按钮(Button)监听 button_start.setOnClickListener(start); button_stop.setOnClickListener(stop); /开始按钮 private OnClickListener start = new OnClickListener() public void onClick(View v) /开启Service startService(new Intent(com.yarin.Android.MUSIC); ; /停止按钮 private OnClickListener stop = new OnClickListener() public void onClick(View v) /停止Service stopService(new Intent(com.yarin.Android.MUSIC); ; public class MusicService extends Service /MediaPlayer对象 private MediaPlayer player; public IBinder onBind(Intent arg0) return null; public void onStart(Intent intent, int startId) super.onStart(intent, startId); /这里可以理解为装载音乐文件 player = MediaPlayer.create(this, R.raw.test); /开始播放 player.start(); public void onDestroy() super.onDestroy(); /停止音乐-停止Service player.stop(); AndroidManifest.xml文件中 2.2 Aandrod的生命周期 public class Activity02 extends Activity private static final String TAG = Activity02; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main2); Log.v(TAG, onCreate); public void onStart() super.onStart(); Log.v(TAG, onStart); public void onResume() super.onResume(); Log.v(TAG, onResume); public void onPause() super.onPause(); Log.v(TAG, onPause); public void onStop() super.onStop(); Log.v(TAG, onStop); public void onDestroy() super.onDestroy(); Log.v(TAG, onDestroy); public void onRestart() super.onRestart(); Log.v(TAG, onReStart); 这些方法都是系统自动调用的。第三章3.1 事件处理 * 控件事件通过设置其控件的监听器来监听并处理事件 * 按键按下事件:通过重写onKeyDown方法 * 按键弹起事件:通过重写onKeyUp方法 * 触笔点击事件:通过实现onTouchEvent方法 * 示例中使用了Toast控件: * Toast.makeText(this, string, Toast.LENGTH_SHORT).show(); public class Activity01 extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /获得Button对象 Button button_ok = (Button) findViewById(R.id.ok); button_ok.setOnClickListener(new Button.OnClickListener() -/设置Button控件监听器 public void onClick(View v) /这里处理事件 DisplayToast(点击了OK按钮); ); /* 按键按下所触发的事件*/ public boolean onKeyDown(int keyCode, KeyEvent event) switch (keyCode) case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(按下:中键); break; case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(按下:上方向键); break; case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(按下:下方向键); break; case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(按下:左方向键); break; case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(按下:右方向键); break; return super.onKeyDown(keyCode, event); /* 按键弹起所触发的事件*/ public boolean onKeyUp(int keyCode, KeyEvent event) switch (keyCode) case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(弹起:中键); break; case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(弹起:上方向键); break; case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(弹起:下方向键); break; case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(弹起:左方向键); break; case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(弹起:右方向键); break; return super.onKeyUp(keyCode, event); /用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现-此方法没用过具体情况怎么样不是很清楚? public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) return super.onKeyMultiple(keyCode, repeatCount, event); /* 触笔事件*/ public boolean onTouchEvent(MotionEvent event) int iAction = event.getAction(); /利用getAction得到所执行的动作 if (iAction = MotionEvent.ACTION_CANCEL | iAction = MotionEvent.ACTION_DOWN | iAction = MotionEvent.ACTION_MOVE) return false; /得到触笔点击的位置 int x = (int) event.getX(); int y = (int) event.getY(); /将获得的坐标转成String类型的方法 DisplayToast(触笔点击坐标:(+Integer.toString(x)+,+Integer.toString(y)+); return super.onTouchEvent(event); /* 显示Toast */ public void DisplayToast(String str) Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); 我们分析了一些常用事件处理方式。每一个键都对应一个键值。当然也可根据需要来改变一些键的功能,需要我们自己构建KeyEvent对象-有待进一步学习 构造KeyEvent对象的几种方法: KeyEvent(int action,int code); KeyEvent(long DownTime,long EventTime,int action,int code,int repeat); KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState); KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode); KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags); KeyEvent(KeyEvent origEvent,long EventTime,int newRepart); 例: public class Activity01 extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); public boolean onKeyDown(int keyCode, KeyEvent event) /这里构建KeyEvent对象,其功能为返回键的功能 /因此我们按任意键都会执行返回键功能 KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); /这里传入的参数就是我们自己构建的KeyEvent对象key return super.onKeyDown(key.getKeyCode(), key); 3.2 常用控件 Button xml设计 代码设计Button button = new Button(this); button.setText(我是Button); button.setWidth(123); /设置宽度 button.setHeight(123); /设置高度 button.setTextColor(Color.BLUE); /设置文字颜色 button.setTextSize(123); /设置字体大小 button.setBackgroundColor(Color.BLUE); /设置控件背景色 监听器 button.setOnClickListener(new Button.OnClickListener()/设置按钮的事件监听 public void onClick(View v) /处理按钮事件产生一个Toast.利用button.getText()得到按钮显示的内容 Toast toast = Toast.makeText(Activity01.this, 你点击了“+button.getText()+”按钮!, Toast.LENGTH_LONG); /设置toast显示的位置 toast.setGravity(Gravity.TOP, 0, 150); /显示该Toast toast.show(); ); - TextView 一个用来显示文本的控件 xml设计 android:paddingLeft=50px android:paddingTop=5px android:paddingBottom=5px android:textSize=30sp android:singleLine=true android:layout_below=id/imageView_handler/在什么下 android:gravity =left /用于设置View中内容相对于View组件的对齐方式, android:layout_gravity/用于设置View组件相对于Container的对齐方式。 android:paddingLeft=30px / 按钮上设置的内容离按钮左边边界30个像素 android:layout_marginLeft=30px /整个按钮离左边设置的内容30个像素 android:layout_weight=1/控件权重 即占的比例 默认值为0 android:gravity=center_horizontal/水平居中 android:padding=3dip 代码设计TextView textView = new TextView(this); /声明对象 textView.setTextColor(Color.RED); /设置字体颜色 textView.setTextSize(20); /设置字体大小 textView.setBackgroundColor(Color.BLUE);/控件背景色 textView.setText(你好) /显示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE); /设置为不可见/可见 textView.setGravity(Gravity.CENTER);/设置文字权重 监听器TextView textView = new TextView(this); /得到对象 textview.setOnClickListener(new TextView.OnClickListener()-TextView监听器 public void onClick(View v) ); - ImageButton 带图标的按钮 xml设计 代码中设计 imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2);/在代码中设计使用的图片(得到对象后) 监听器 imageButton.setOnClickListener(new Button.OnClickListener() -ImageButton监听器 Override public void onClick(View v) /创建对话框 Dialog dialog = ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机务材料考试题及答案
- 心理咨询的技术与方法探讨试题及答案
- 药剂类考试重要环节试题及答案
- 精简西医临床知识点梳理试题及答案
- 心理咨询师考试常见谬误试题及答案
- 2025贵州省安全员《A证》考试题库
- 探索2024文化产业管理试题及答案
- 激光技术设备功能试题及答案
- 药物的临床前研究阶段试题及答案
- 法律考研基础试题及答案
- 山东省高中名校2025届高三4月校际联合检测大联考生物试题及答案
- 2025年03月如东县事业单位工作人员120人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024北京八中高一(下)期中英语试题及答案
- 槟榔合作协议合同
- 欢乐购物街(教案)-2024-2025学年一年级下册数学人教版
- 【9物一模】2025年安徽省合肥市蜀山区九年级中考一模物理试卷(含答案)
- 浅谈南京市区地形地貌和工程地质层构成
- 2025年中铁快运股份有限公司招聘(98人)笔试参考题库附带答案详解
- 2025年武汉数学四调试题及答案
- 职业病防护设施与个体防护用品的使用和维护
- 绿化养护服务投标方案(技术标)
评论
0/150
提交评论