一、针对特性配置
-
触控类型(Touchscreen type)
notouch(无触控)
finger(手指触控)
stylus(触控笔触控) -
文字输入方式(text input)
nokeys (无实体键盘)
qwerty(实体键盘)
12key(数字键盘) -
浏览方式(navigation method)
notouch(无触控)
dpad(方向键)
trackball(轨迹球)
wheel(滚轮) -
配置文件中指定屏幕方向
只要在Mainfest的activity中加上 android:screenOrientation="portrait",应用程序的屏幕就会将强制规定成为使用直式显示
portrait:直式显示
landscape:横式显示
Sensor:自动切换 -
程序中指定屏幕方向
要强制应用程序屏幕的显示方向,也可以在程序代码中添加:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
SCREEN_ORIENTATION_LANDSCAPE:横式
SCREEN_ORIENTATION_PORTRAIT:直式
二、信息提醒
public void onClick(View v) { EditText number_text = (EditText) this.findViewById(R.id.editText1); number = number_text.getText().toString(); double weight = Double.parseDouble(number); if (weight > 25) { NotificationManager notManager = (NotificationManager) this .getSystemService(NOTIFICATION_SERVICE); Notification msg = new Notification(R.drawable.ic_launcher, "Hello!", System.currentTimeMillis()); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(MainActivity.this, OActivity.class), PendingIntent.FLAG_CANCEL_CURRENT); msg.setLatestEventInfo(this,"Welcom!", "This is Android ", contentIntent); notManager.notify(0, msg); } }
-
主要架构:
先声明一个“NotificationManager”类型的notManager对象,用来负责管理整个与这个Activity信息提醒相关的事物,然后在声明一个“Notification”类型的msg对象,用来放显示的信息内容,最后使用“NotificationManager”类型的“notify”方法将msg对象传递给Android框架,将提醒信息显示在状态栏上。 - 分析:
- Notification msg = new Notification(R.drawable.ic_launcher, "Hello!",
System.currentTimeMillis());
第一个参数是要显示在屏幕上的图标资源,我们直接使用这个应用程序的图标,不管原来的图形资源大小如何, Android都会自动缩放成为适当大小,第二个参数是要马上显示在状态栏上的提醒信息,第三个参数是当这个“Notification”传送到的时间。 -
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(MainActivity.this, OActivity.class),
PendingIntent.FLAG_CANCEL_CURRENT)我们用到“PendingIntent”的“getActivity”方法,来在拥护迪娜选状态栏中这笔信息时,去执行一个Activity。 -
msg.setLatestEventInfo(this, "Welcom!", "This is Android ", contentIntent);
第一个参数是传入当前的Activity对象以供参考,第二个参数是状态栏中显示的主题,第三个参数是状态栏中显示的说明, 第四个参数是接受“PendingIntent”类的传入参数,在这边指定当拥护按下状态栏中该笔信息的时候,我们可以让及其开始执行某些我们希望去执行的功能。
public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // 使用自定义图标 menu.add(0, Menu.FIRST, 0, "关于").setIcon(R.drawable.ic_launcher); // 使用安卓内置的菜单图标 menu.add(0, Menu.FIRST + 1, 0, "结束").setIcon( android.R.drawable.ic_menu_help); this.getMenuInflater().inflate(R.menu.test, menu); return super.onCreateOptionsMenu(menu); }
return true;跟 return super.onCreateOptionsMenu(menu);没有区别,跟我们平常做的在menu文件中添加也没有什么区别。Menu.FIRST是一个int类型的数据 ,所以可以用 int MENU_ABOUT = Menu.FIRST;int MENU_END= Menu.FIRST + 1;来代替。但是,我们把这段代码码上去,却发现图标显示不出来,这是为什么呢?这是因为我们目前用的Android的系统是4.4,而创建的Menu通过setIcon方法是没有办法给它添加图标的,这在2.3系统中可以显示出来。原因是涉及到菜单的源码类MenuBuilder发生了改变,mOptionalIconsVisible 的默认值为false,这个时候,有个非常简便又有效的方法,在AndroidManifest.xml中改变主题(Theme)为Theme就可以了!
三、布局
LinearLayout(线性布局)
线性布局是按照垂直或者水平的顺序来排列元素的。如果是垂直排列的话,元素排列就是N行一列,如果我们想在一行里面还添加好几个元素,我们就可以在里面再加上一个水平排列的线性布局。
我们可以利用 android:layout_weight="1"这一语句来改变组件在每一行中所占的比例,当一行只有一个元素时,默认为0。
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_weight="1" android:text="@string/name" /> <EditText android:singleLine="true" android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" android:ems="10" android:gravity="right" android:hint="@string/hint1" android:inputType="number" android:textColor="#550000" android:textSize="24dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/password" /> <EditText android:id="@+id/password_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" android:ems="10" android:inputType="numberPassword" > <requestFocus /> </EditText> </LinearLayout>
FrameLayout(单帧布局)
单帧布局中,我们不可以设置组件的位置,都是放在左上角,所以就会造成一层层叠加的情况。
AbsoluteLayout(绝对布局)
绝对布局,组件的位置都是由坐标来表示的,左上角为(0,0),往右往下坐标增大。
TableLayout(表格布局)
一个TableLayout是由多个TableRow组成的,每一个TableRow都是横向排列,宽高一致的。如果我们想要两行,我们就添加两个TableRow就可以了。
<TableRow android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </TableRow>
RelativeLayout(相对布局)
相对布局是我们用得最多的布局,就不详细解释了。
四、布局属性
接下来我们介绍一下我们用得比较多的布局属性
android:hint="@string/hint1"是用来写EditText里面内容为空时的提示内容
android:layout_gravity="bottom" 设置组件靠左靠右等
android:gravity="right"设置view内容的靠左靠右
android:textColor="#550000"设置text的颜色
android:textSize="24dp"设置text的字体大小
android:singleLine="true"设置text为单行显示
android:cursorVisible="false"设置光标是否显示
android:editable="false"设置是否可以编辑
android:digits="2314144"设置允许输入哪些字符
android:ellipsize="start"当内容过长时,该如何显示。start是开始有省略号,end是末尾有省略号,middle是中间有省略号,marquee是动画跑马灯显示。
我们在EditText这样的组件中,可以看到系统初始设定的这样一句话,android:ems="10",意思是组件的长度等于10个字符的长度,这个长度我们当然是可以改变的。
五、生命周期
我们通过重写方法来进行测试,我们首先打开应用程序,点击按钮,到达第二个界面,在点返回键,回到第一个界面。
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private String number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_test = (Button) this.findViewById(R.id.button1); bt_test.setOnClickListener(this); System.out.println("MainActivityonCreate"); } public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, O2Activity.class); this.startActivity(intent); } protected void onStop() { System.out.println("MainActivityonStop"); super.onStop(); } protected void onPause() { super.onPause(); System.out.println("MainActivityonPause"); } protected void onResume() { super.onResume(); System.out.println("MainActivityonResume"); } protected void onStart() { super.onStart(); System.out.println("MainActivityonStart"); } protected void onRestart() { super.onRestart(); System.out.println("MainActivityonRestart"); } protected void onDestroy() { super.onDestroy(); System.out.println("MainActivityonDestroy"); } }
import android.os.Bundle; import android.app.Activity; public class O2Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_o2); System.out.println("O2ActivityonCreate"); } protected void onStop() { System.out.println("O2ActivityonStop"); super.onStop(); } protected void onPause() { super.onPause(); System.out.println("O2ActivityonPause"); } protected void onResume() { super.onResume(); System.out.println("O2ActivityonResume"); } protected void onStart() { super.onStart(); System.out.println("O2ActivityonStart"); } protected void onRestart() { super.onRestart(); System.out.println("O2ActivityonRestart"); } protected void onDestroy() { super.onDestroy(); System.out.println("O2ActivityonDestroy"); } }
下面是运行的结果:
MainActivityonCreate
MainActivityonStart
MainActivityonResume
MainActivityonPause
O2ActivityonCreate
O2ActivityonStart
O2ActivityonResume
MainActivityonStop
O2ActivityonPause
MainActivityonRestart
MainActivityonStart
MainActivityonResume
O2ActivityonStop
O2ActivityonDestroy
相关推荐
### Android 数据存储与读取详解 #### 一、引言 在Android开发中,数据存储是一项重要的技术。根据不同的应用场景,开发者可以选择不同的存储方式来满足需求。本篇将详细介绍Android中几种常见的数据存储方法,...
《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用...
Android开发第二次复习课 自用的
这个课程的主题"Android应用开发基础到深入篇第一课第二到四讲_Android总体介绍"涵盖了从入门到进阶的关键概念,旨在帮助开发者建立坚实的Android开发基础。下面将详细阐述这一阶段的知识点。 首先,Android是一个...
### Android开发第二课知识点梳理 #### 一、项目结构与包管理 - **包(package)的概念**:在Java中,`package`是用来组织类的一种方式,它可以避免命名冲突,并且帮助开发者更好地管理类文件。在Android开发中,...
**Android第四课讲义** 本讲义主要涵盖了Android开发中的核心概念和技术,是西安电子科技大学Android课程的一部分。作为一门深入浅出的课程,它旨在帮助学生掌握Android应用开发的基础知识和实战技能。以下是对讲义...
Android开发第一课 本教程旨在引导读者了解 Android 应用开发的基本流程和常用控件的使用。通过本实验,读者将掌握布局文件的创建、TextView、EditText、Button、RadioButton 等控件的使用,并了解 Android 开发...
Android课程开始了,想学的话,可以看看,之后陆续会有补充的;今天是第一课--Android模拟器的使用;童鞋们,千万不要错过啊!!
第3章《第一个Android程序》:这一章通常会介绍Android开发环境的搭建,包括安装Android Studio、配置SDK以及创建第一个Hello World应用。它会讲解AndroidManifest.xml的重要性,以及如何在MainActivity.java中编写...
本教程分为软件使用部分(第1课、第15~16课)、汉字字母部分(第2课~第9课、第17课)、输入规则部分(第10课~第14课)。 附目录: 第1课 软件下载、安装与调用 第2课 认识汉字基因 第3课 基因组合:折笔 第4课 ...
二,安卓的工程目录 scr/包名/Activity:主要存放代码的目录 gen:(Generated Java Files)自动生成的java文件 assets:资产,存放大型数据文件,Html,css,音频,视频,大型的图片等文件 bin:程序编译完成之后...
【Android代码-课程表安卓app】是一个专门为学生和教师设计的手机应用,旨在方便地管理和查看个人或班级的课程安排。这款应用的开发基于Android操作系统,利用Java或Kotlin编程语言进行编写,结合Android Studio IDE...
通过这个"android 自由落体运动 游戏第一课",你将获得实际的编程经验,为更复杂的Android游戏开发打下坚实的基础。随着技能的提升,你可以尝试添加更多功能,如多人在线对战、积分系统、不同难度级别等,以增加游戏...
第2课 Android的日志和测试单元的使用和文件的操作.ziw
"易安卓零基础第十八课 - 接口函数调用"这个教程可能是针对初学者设计的,旨在帮助他们理解并掌握如何在Android应用中有效地使用接口。在本课程中,我们可以期待学习到以下几个核心知识点: 1. **接口的概念**:在...
《Android完全讲义课文源代码2》是一份深入学习Android开发的重要资料,由知名开发者李宁编撰。这份讲义涵盖了Android开发的诸多关键知识点,旨在帮助开发者从基础到高级全面掌握Android应用的构建和优化。现在我们...
Java入门第一课主要针对初学者,旨在提供一个良好的起点,帮助理解Java编程语言的基本概念和语法。这个课程可能源自GitHub上的一个开源项目,因此,它应该是动态更新的,随着学习者的需求和技术的发展而不断丰富。 ...
cuit第二课堂安卓客户端二等舱cuit第二课堂安卓客户端请在合理期限内进行报名签到(如只签到进行中的活动)违规行为导致的后果自负功能校外网(webvpn)登录对非完成结状态的活动报名(报名中,待开始,进行中)任意时间...
【标题】"安卓课上项目集合1.zip"揭示了这个压缩包主要包含一系列与安卓应用开发相关的项目。这些项目可能是为了教学目的而设计的,涵盖了各种类型的应用,旨在帮助学习者掌握Android平台上的编程技能。 【描述】中...
在本课程“创科之龙_安卓开发”第21课中,我们聚焦于高通平台下Booloader加载设备树DTB(Device Tree Blob)的深入解析。这个主题主要涉及Linux内核与硬件交互的关键环节,对于Android系统的底层理解和定制开发至关...