您的位置:首页 > 移动开发 > Android开发

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.用户界面设计:

    按钮、文本输入控件、选择框等都是组件

<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相互之间关系:

          


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: