Android开发随笔(一)

一、安卓开发初体验

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

          

  

 

posted @ 2015-10-12 21:58  ZashioM  阅读(279)  评论(0编辑  收藏  举报