Android开发随笔(一)
2015-10-12 21:58
696 查看
一、安卓开发初体验
1.创建项目需注意:
1)在包名处(Package Name)输入com.bignerdranch.android.geoquiz ,包名遵循了“DNS反转”约定,
亦即将企业组织或公司的域名反转后,在尾部附加上应用名称。遵循此约定可以保证包名的唯一性,这样,
同一设备和Google Play商店的 各类应用就可以区分开来。
2)在Activity Name中取名为QuizActivity,系统会自动在Layout Name中生成activity_quiz.xml,建议
遵循这样一种好的命名习惯。
2.用户界面设计:
按钮、文本输入控件、选择框等都是组件
3.组件的实际运用(创建QuizActivity.java)
4.String.xml(这个较为简单,就不再赘述了)
5.Android编译过程:
二、Android与MVC设计模式
1.创建新类(引入model):
创建TrueFalse类
2.MVC:
M代表model(模型对象):java文件,它不关心用户界面,唯一存在的目的就是储存和管理应用数据
V代表view(视图对象):一切能都在屏幕上显示出来的,就是视图对象,想xml布局文件等
C代表controller(控制对象):就是activity,Android SDK中Activity类的一个具体实例,负责管理用户与信息屏的交互
3.MVC相互之间关系:
1.创建项目需注意:
1)在包名处(Package Name)输入com.bignerdranch.android.geoquiz ,包名遵循了“DNS反转”约定,
亦即将企业组织或公司的域名反转后,在尾部附加上应用名称。遵循此约定可以保证包名的唯一性,这样,
同一设备和Google Play商店的 各类应用就可以区分开来。
2)在Activity Name中取名为QuizActivity,系统会自动在Layout Name中生成activity_quiz.xml,建议
遵循这样一种好的命名习惯。
2.用户界面设计:
按钮、文本输入控件、选择框等都是组件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" //match_parent是填充单元尽可能多的空间 android:layout_height="match_parent" android:gravity="center" //gravity控制元素在控件里的显示位置 android:orientation="vertical" > <TextView android:layout_width="wrap_content" //wrap_content是根据内容自动布局 android:layout_height="wrap_content" android:padding="24dp" //padding指定的是元素边框与元素内容之间的距离 android:text="@string/question_text" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > //orientation(定向)是控制布局顺序,垂直(vertical)还是水平(horizontal) <Button android:id="@+id/true_button" //为Button控件生成id,为了在activity中获取它们 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/true_button" /> //调用String.xml中的true_button字符串 <Button android:id="@+id/false_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/false_button" /> </LinearLayout> </LinearLayout>
3.组件的实际运用(创建QuizActivity.java)
package com.zhouhongming.geoquiz; import android...... //此类为Activity子类,里面为整个界面的逻辑控制代码 public class QuizActivity extends Activity { //第一步,为视图对象设置变量 private Button mTrueButton; private Button mFalseButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //第二步,通过activity_quiz.xml来获取activity的用户界面 setContentView(R.layout.activity_quiz); //第三四步都是在onCreate()方法中实现 //第三步,为视图变量寻找资源ID,使用findViewById(),注意要向下转型 mTrueButton = (Button)findViewById(R.id.true_button); //第四步,用视图变量设置监听器,所有监听器参数都作为匿名内部类来实现 mTrueButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(QuizActivity.this, R.string.incorrect_toast, Toast.LENGH_SHORT).show(); } }); mFalseButton = (Button)findViewById(R.id.false_button); mFalseButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //创建提示消息:Toast类的makeText方法,第一个参数为本Activity当前实例, 第二个参数为待显示字符串消息的资源ID,第三个参数为消息显示持续时间 Toast.makeText(QuizActivity.this, R.string.correct_toast, Toast.LENGH_SHORT).show(); } }); @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); Log.i(TAG, "onSaveInstanceState"); savedInstanceState.putInt(KEY_INDEX, mCurrentIndex); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_quiz, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
4.String.xml(这个较为简单,就不再赘述了)
5.Android编译过程:
二、Android与MVC设计模式
1.创建新类(引入model):
创建TrueFalse类
package com.zhouhongming.geoquiz; //TrueFalse类是MVC中的model,用来封存一些数据 public class TrueFalse { //这儿是设置问题,因为是资源ID,所以用int类型 private int mQuestion; //这儿为判断正确与否的方法 private boolean mTrueQuestion; //这儿是为了创建数组而使用的TrueFalse类的构造方法 public TrueFalse(int question,boolean trueQuestion){ mQuestion = question; mTrueQuestion = trueQuestion; } public int getQuestion() { return mQuestion; } public boolean isTrueQuestion() { return mTrueQuestion; } }
2.MVC:
M代表model(模型对象):java文件,它不关心用户界面,唯一存在的目的就是储存和管理应用数据
V代表view(视图对象):一切能都在屏幕上显示出来的,就是视图对象,想xml布局文件等
C代表controller(控制对象):就是activity,Android SDK中Activity类的一个具体实例,负责管理用户与信息屏的交互
3.MVC相互之间关系:
相关文章推荐
- android开发(一):环境搭建
- Windows下载Android源码
- android 的 Testing Support Library 测试支持包(库)
- Android Touch事件传递机制解析
- android背景选择器selector用法汇总
- android 滚动条
- Android 自定义下拉刷新上拉加载更多Listview
- Android view手势缩放与移动
- 利用Android studio快速搭建安卓开发环境
- Android音乐编程:管理音频焦点
- 初学android第一章、第二章
- Android 那些你所不知道的Bitmap对象详解
- [Android]实现ListView的删除功能
- android 代码绘制转盘抽奖的实现
- android数据访问模式:档、SharedPreferences
- Android中自定义Adapter的基本原理
- Android开发调试中遇到的Waiting for HOME解决方案
- Android中Menu的基本用法
- android arcelable 传递 boolean值
- android view SurfaceView GLSurfaceView的关系和区别