zoukankan      html  css  js  c++  java
  • Android学习笔记(第一篇)编写第一个程序Hello World+Activity

    PS:终于开始正式的搞Android了...无人带的一介菜鸟,我还是自己默默的努力吧...

    学习内容:

    1.编写第一个Hello World程序..

      学习Android,那么就需要有一个编译器来集成这个环境,然后在搭建好环境的编译器上进行开发就可以了,我所介绍的都是在Eclipse上来进行Android的开发...环境搭建在这里我就不进行介绍了..在这里就直接来开发...

      先新建一个项目,想必新建项目这东西大家都明白...在建立完Android项目以后,现在一般都是4.X以后的版本了...因此在4.X以后的版本的项目中的layout布局中都会增加一个fragment.xml文件...这个文件被称之为碎片功能,由于自己也是新手,这个东西也是刚刚接触,对这个东西也不是很了解,因此我先直接删除了fragment.xml文件,只是用activity_main.xml文件。。。删除fragment.xml文件后,需要修改MainActivity.java文件,否则会直接出现错误..修改内容如下...//注释掉的部分,代表我们需要修改的部分...直接删除掉也可以,注释掉也行...

    package com.example.android_hello;
    
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.os.Build;
    import android.app.Activity;
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    //        if (savedInstanceState == null) {
    //            getSupportFragmentManager().beginTransaction()
    //                    .add(R.id.container, new PlaceholderFragment()).commit();
    //        }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, 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();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
        /**
         * A placeholder fragment containing a simple view.
         */
    //    public static class PlaceholderFragment extends Fragment {
    //
    //        public PlaceholderFragment() {
    //        }
    //
    //        @Override
    //        public View onCreateView(LayoutInflater inflater, ViewGroup container,
    //                Bundle savedInstanceState) {
    //            View rootView = inflater.inflate(R.layout.fragment_main, container,
    //                    false);
    //            return rootView;
    //        }
    //    }
    
    }

    同时我们还需要修改activity.xml文件,把其中的内容全部删除掉。然后以下代码..

    放入一个绝对布局和一个文本显示组件...
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world">
            
        </TextView>
    </RelativeLayout>

      然后直接进行运行就可以了...其实直接建立出来的Android项目也是可以直接进行运行的,运行的结果也是会在模拟器上显示出Hello World...因为新手的原因,因此就使用了常规的模式...以后再对fragment进行深入的研究...
      我这个在建立了4.X以后的版本后,会多一个appcompat文件,里面包含了一些要调用的类,这是在22.1以后的版本增加的一个新的东西,这个类的提供可以带来更多的便利..这个文件是不允许删除的...删除掉以后程序会报错...

    2.Activity的了解...

      Activity是Android程序的四大组件之一...Activity是程序的应用层...程序的每一个显示屏幕就是一个Activity...Activity可以理解成一个JSP文件...Activity是无法直接显示的,它是一个抽象层,一个壳子,显示的内容就是View或ViewGroup,就是用户界面组件..这个下章再说...先有个印象...

      Activity是具有生命周期的...手机最重要也是最基础的功能是打电话,也就意味着电话来的时候可能随时要把现在的程序暂停,如果电量不足的时候也可能随时要把现有程序关闭;因此Android程序和电脑上的程序有所不同,具体到Activity,Activity的生命周期不是自身控制的,而是由Android系统控制的。

    Activity的四种基本状态...

    i.running运行状态...

    这个状态表示正在运行的Activity,显示在屏幕的最前端,可以和用户进行相应的交互...

    ii.Paused暂停状态...

    Paused状态表示的现在的Activity被一个透明层或者是另一个非全屏的Activity进行了覆盖...虽然可见,但是无法实现用户交互...

    iii.Stop停止状态...

    当一个Activity被另一个Activity完全覆盖的时候,用户是无法见到的...

    iv.Killed杀死状态

    表示Activity根本没有进行启动或者是直接被系统终结杀死的状态...

    Activity的生命周期图...                                                

    Activity栈。。。。


      正在运行的Activity 处在在栈的最顶端,它是运行状态的,当有新Activity进入屏幕最上端时,原来的Activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于Pause状态,如果他被遮盖那么他处于Stop状态。当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。
      譬如:当你在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:他告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。
      三.实例:观察翻转屏幕导致的Activity状态变化
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBar;
    import android.support.v4.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.os.Build;
    import android.widget.TextView;
    import android.app.Activity;
    import android.widget.ImageView;
    import android.app.Activity;
    /** Called when the activity is first created. */
    public class MainActivityLife extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(tag, “onCreate”);
        }
    @Override
    public void onStart(){
        super.onStart();
        Log.i(tag, “onStart”);
        }
    @Override
    public void onPause(){
        super.onPause();
        Log.i(tag, “onPause”);
        }    
    @Override
    public void onResume(){
        super.onResume();
        Log.i(tag, “onResume”);
        }
    @Override
    public void onStop(){
        super.onStop();
        Log.i(tag, “onStop”);
        }
    @Override
    public void onDestroy(){
        super.onDestroy();
        Log.i(tag, “onDestroy”);
        }
    }

    通过运行,我们会在LogCat控制台下看到输出结果...和下面结果类似...

  • 相关阅读:
    读取MySQL的log方法
    mysql导入数据之乱码分析及解决办法
    MYSQL_BIN_LOG::purge_logs was called with file '/home/log/mysqlbin.22.log' not listed in the index
    我回来了
    凌云架构V0.1——写在开始之前
    凌云架构V0.1——序
    不常用的sql语句
    IIS配置技巧
    Log4Net学习笔记1
    ASP+ACCESS 温故而知新
  • 原文地址:https://www.cnblogs.com/RGogoing/p/4517545.html
Copyright © 2011-2022 走看看