【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了手机Android系统常用控件总结 - 培训资料相关资料,希望对各位网友有所帮助!
找工作上长沙英才网 手机
Android系统常用控件总结 Notepad编写 可以负责粘贴到其中去 看得更清楚。
内容包括了
Android中的大部分常用控件及其事件的监听 第一章 1.1
Android中src文件夹包含项目的所有包及其资源文件res文件夹包含了项目中所有的资源。
比如程序图标drawable布局文件layout常量value音频文件raw R.java是在创建项目是自动生成的只读文件不可更改此文件。
R文件其作用是定义项目中所有资源的索引文件。
1.2 AndroidManfest.xml 如下 ltxml versionquot1.0quot encodingquotutf-8quotgt ltmanifest //根节点描述了packege包中所有的内容 xmlns:androidquothttp://schemas.
android.com/apk/res/androidquot //包命名空间的声明使得
Android中各种标准属性能在文件中使用提供了大部分元素中的数据 packagequotAndroid.Summaryquot //引用程序包名
android:versionCodequot1quot
android:versionNamequot1.0quotgt ltuses-sdk
android:minSdkVersionquot7quot /gt //使用SDK版本号 ltapplication //包含package中application级别组件声明的根节点可包含application的一些全局和默认的属性如标签labelicon主题必要的全限。
注意一个manifest中只能包含一个或0个application
android:iconquotdrawable/iconquot //应用程序图标
android:labelquotstring/app_namequotgt //应用程序名字 ltactivity
android:namequot.SummaryActivityquot //Activity用来与用户交互的主要工具是用户打开程序的初始界面.此处为引用程序默认启动的Activity
android:labelquotstring/app_namequotgt 找工作上长沙英才网 ltintent-filtergt/ //描述了Activity的启动时间和位置另外为了支持查找Activity可以包含一个或多个ltintent-filtergt ltaction
android:namequotandroid.intent.action.MAINquot /gt //acton 为组件支持的Intent action ltcategory
android:namequotandroid.intent.category.LAUNCHERquot /gt//categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity lt/intent-filtergt lt/activitygt ltactivity
android:name quotActivity02quotgtlt/activitygt //在此对新增的Activity进行注册。
如果在不同的包中注意声明是将包名带上 lt/applicationgt lt/manifestgt 1.3 String.xml如下 ltxml versionquot1.0quot encodingquotutf-8quotgt ltresourcesgt //此处定义了两个字符串资源即定义了app_namehello常量 ltstring namequothelloquotgtHello World SummaryActivitylt/stringgt ltstring namequotapp_namequotgtSummarylt/stringgt lt/resourcesgt 如何使用这个资源呢如下 Resources r this.getContext.getResources //通过Context的getResource实例化一个Resources对象 String app_name Stringr.getStringR.string.app_name //然后通过getString方法取得指定的索引的字符串。
项目中所有常量都可以在String.xml文件中定义 String hello Stringr.getStringR.string.hello 1.4 main.xml如下 ltxml versionquot1.0quot encodingquotutf-8quotgt 找工作上长沙英才网 ltLinearLayout xmlns:androidquothttp://schemas.
android.com/apk/res/androidquot//LinearLayout 线程版面配置
android:orientationquotverticalquot //版面配置的方式。
此为自上到下为垂直配置quothorizontalquot为水平配置
android:layout_widthquotfill_parentquot //定义当前视图在屏幕上所占的宽度quotfill_parentquot为填充整个屏幕宽度 /
android:layout_weightquot50quot/ //用于给一个布局中多个视图的重要度赋值
android:layout_heightquotfill_parentquot //定义当前视图在屏幕上所占的高度...........................高度 gt ltTextView
android:layout_widthquotfill_parentquot
android:layout_heightquotwrap_contentquot //随着视图的栏位的不同而改变这个视图的高度或宽度
android:textquotstring/helloquot //在视图上显示的内容此处引用了String中的hello字符串 /gt lt/LinearLayoutgt 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 onCreateBundle savedInstanceState //重写onCreate方法 super.onCreatesavedInstanceState setContentViewR.layout.main //设置要显示的布局 第二章 2.1
Android应用程序由四个模块组成ActivityServiceIntentContentProvider注意一个应用程序不一定包含全部的四个模块. 在使用时必须在AandroidManfest中进行声明。
Activity可以理解为用户看到屏幕主要用于处理应用程序的整体性工作。
如 a.监听系统事件触屏事件为用户显示指定的View启动其他Activity等。
b.所有应用的Activity都继承于
android.app.Activity该类是
Android提供的基层类。
c.一个Activity通常就是一个单独的屏幕。
d.每一个活动都被实现为一个独立的类。
e.大多数的应用程序都是由多个Activity组成。
Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。
在Intent的描述结构中有两个重要的部分:动作和对应的数据。
典型的动作有MAINVIEWPICKEDIT.而动作对应的数据则以URI的形式表示。
例如要查一个人的联系方式需要创建一个动作类型View的Intent 以及一个表示这个人的URI. Intent的使用 button1.setOnClickListenernew Button.OnClickListener public void onClickView v Intent intent new Intent //创建一个Intent对象 intent.setClassActivity01.thisActivity02.class//指明要启动的另一Activity02 startActivityintent //启动一个新的Activity 找工作上长沙英才网 Activity01.this.finish //关闭当前Activity01 这里需要注意在
Android中对新启动的Activity进行声明。
声明方式 ltactivity
android:name quotActivity02quotgtlt/activitygt //注意如果在不同的包中在声明是还要加上包名 IntentReceiver 如果希望
Android应用能够对外部事件如电话打入时数据网络可用时做出响应可用使用IntentReceiver.虽然IntentReceiver在如上事件发生 时会使用NotificationManager通知用户但它并不能生产UI。
IntentReceiver可以在AndroidManifest.xml中注册也可在代码中使用Context.registerReceiver 进行注册。
当IntentReceiver被触发时系统会在需要的时候启动应用。
各种应用还可以通过ContentReceiver将他们自己的IntentReceiver广播出去。
Content Provider 作用主要用于不同应用程序中的数据的传递。
Content Provider 是一个特殊的存储数据的类型。
Android自身提供现成的Content Provider:Contacts BrowserCallLogSettingsMediaStore 应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider然后可以用ContentResolver提供的方法来使用你需要的Content Provider 其中ContentResolver提供的方法有queryinsertupdate等。
URI----String形式的Content Provider的完整路径。
下面这个这个例子通过ContentProvider获取电话本中的数据然后显示到TextView中去。
public class Activity01 extends Activity public void onCreateBundle savedInstanceState 找工作上长沙英才网 TextView textView new TextViewthis//得到TextView对象 String string quotquot super.onCreatesavedInstanceState ContentResolver resolver getContentResolver//得到ContentResolver对象 Cursor cursor resolver.queryContactsContract.Contacts.CONTENT_URInullnullnullnull//取得电话本中开始一项的光标通过query方法查询出符合标准的电话本记录 //向下移动光标 whilecursor.moveToNext //取得联系人名字 int name_index cursor.getColumnIndexPhoneLookup.DISPLAY_NAME String name cursor.getStringname_index //取得电话号码 int number_index cursor.getColumnIndexPhoneLookup.NUMBER String number cursor.getStringnumber_index string namequot:quotnumberquotnquot cursor.close textView.setTextstring//设置TextView显示的内容 setContentViewtextView//显示到屏幕上 其实TextView也是View的一种 注意在使用这些模块中用到了读取联系人的API所以必须在AndroidManifest.xml中声明 声明方式为 ltuses_permission
android:namequotandroid.permission.READ_CONTACTSquotgt 找工作上长沙英才网 lt/uses-permissiongt Service 后台服务没有界面 启动service方法 a.Context.startService b.Context.bindService//与上一种方法不同处 如果这个Service没有处于启动状态则将其启动 下面这个例子以Activity中的俩个控件来控制播放一首Mp3. 例中需要在res文件夹中创建一个raw文件夹 然后放入一首MP3 public class Activity01 extends Activity public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main //从main.xml布局中获得Button对象 Button button_start ButtonfindViewByIdR.id.start Button button_stop ButtonfindViewByIdR.id.stop //设置按钮Button监听 button_start.setOnClickListenerstart button_stop.setOnClickListenerstop //开始按钮 private OnClickListener start new OnClickListener public void onClickView v //开启Service startServicenew Intentquotcom.yarin.
Android.MUSICquot //停止按钮 找工作上长沙英才网 private OnClickListener stop new OnClickListener public void onClickView v //停止Service stopServicenew Intentquotcom.yarin.
Android.MUSICquot public class MusicService extends Service //MediaPlayer对象 private MediaPlayer player public IBinder onBindIntent arg0 return null public void onStartIntent intent int startId super.onStartintent startId //这里可以理解为装载音乐文件 player MediaPlayer.createthis R.raw.test //开始播放 player.start public void onDestroy super.onDestroy //停止音乐-停止Service player.stop AndroidManifest.xml文件中 找工作上长沙英才网 ltservice
android:namequot.MusicServicequotgt ltintent-filtergt ltaction
android:namequotcom.yarin.
Android.MUSICquot /gt ltcategory
android:namequotandroid.intent.category.defaultquot /gt lt/intent-filtergt lt/servicegt 2.2 Aandrod的生命周期 public class Activity02 extends Activity private static final String TAG quotActivity02quot public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main2 Log.vTAG quotonCreatequot public void onStart super.onStart Log.vTAG quotonStartquot public void onResume super.onResume Log.vTAG quotonResumequot public void onPause super.onPause Log.vTAG quotonPausequot public void onStop super.onStop Log.vTAG quotonStopquot 找工作上长沙英才网 public void onDestroy super.onDestroy Log.vTAG quotonDestroyquot public void onRestart super.onRestart Log.vTAG quotonReStartquot 这些方法都是系统自动调用的。
第三章 3.1 事件处理 控件事件通过设置其控件的监听器来监听并处理事件 按键按下事件通过重写onKeyDown方法 按键弹起事件通过重写onKeyUp方法 触笔点击事件通过实现onTouchEvent方法 示例中使用了Toast控件 Toast.makeTextthis string Toast.LENGTH_SHORT.show public class Activity01 extends Activity public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main //获得Button对象 Button button_ok Button findViewByIdR.id.ok 找工作上长沙英才网 button_ok.setOnClickListenernew Button.OnClickListener -------------------------------------------------------//设置Button控件监听器 public void onClickView v //这里处理事件 DisplayToastquot点击了OK按钮quot / 按键按下所触发的事件/ public boolean onKeyDownint keyCode KeyEvent event switch keyCode case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToastquot按下中键quot break case KeyEvent.KEYCODE_DPAD_UP: DisplayToastquot按下上方向键quot break case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToastquot按下下方向键quot break case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToastquot按下左方向键quot break case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToastquot按下右方向键quot break return super.onKeyDownkeyCode event 找工作上长沙英才网 / 按键弹起所触发的事件/ public boolean onKeyUpint keyCode KeyEvent event switch keyCode case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToastquot弹起中键quot break case KeyEvent.KEYCODE_DPAD_UP: DisplayToastquot弹起上方向键quot break case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToastquot弹起下方向键quot break case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToastquot弹起左方向键quot break case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToastquot弹起右方向键quot break return super.onKeyUpkeyCode event //用于响应按键重复点击官方API指出onKeyMultiple方法总是返回false即它没有handle因此必须重写才能实现-------------------此方法没用过具体情况怎么样不是很清楚 public boolean onKeyMultipleint keyCode int repeatCount KeyEvent event return super.onKeyMultiplekeyCode repeatCount event / 触笔事件/ 找工作上长沙英才网 public boolean onTouchEventMotionEvent 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类型的方法 DisplayToastquot触笔点击坐标quotInteger.toStringxquotquotInteger.toStringyquotquot return super.onTouchEventevent / 显示Toast / public void DisplayToastString str Toast.makeTextthis str Toast.LENGTH_SHORT.show 我们分析了一些常用事件处理方式。
每一个键都对应一个键值。
当然也可根据需要来改变一些键的功能需要我们自己构建KeyEvent对象------------------有待进一步学习 构造KeyEvent对象的几种方法 KeyEventint actionint code KeyEventlong DownTimelong EventTimeint actionint codeint repeat KeyEventlong DownTimelong EventTimeint actionint codeint repeatint metState 找工作上长沙英才网 KeyEventlong DownTimelong EventTimeint actionint codeint repeatint metStateint deviceint scancode KeyEventlong DownTimelong EventTimeint actionint codeint repeatint metStateint deviceint scancodeint flags KeyEventKeyEvent origEventlong EventTimeint newRepart 例 public class Activity01 extends Activity public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main public boolean onKeyDownint keyCode KeyEvent event //这里构建KeyEvent对象其功能为返回键的功能 //因此我们按任意键都会执行返回键功能 KeyEvent key new KeyEventKeyEvent.ACTION_DOWN KeyEvent.KEYCODE_BACK //这里传入的参数就是我们自己构建的KeyEvent对象key return super.onKeyDownkey.getKeyCode key 3.2 常用控件 Button xml设计 ltButton
android:idquotid/buttonquot
android:layout_widthquotwrap_contentquot
android:layout_heightquotwrap_contentquot gtlt/Buttongt 代码设计Button button new Buttonthis 找工作上长沙英才网 button.setTextquot我是Buttonquot button.setWidth123 //设置宽度 button.setHeight123 //设置高度 button.setTextColorColor.BLUE //设置文字颜色 button.setTextSize123 //设置字体大小 .