Android学习(一)

学号 20189214 《Android程序设计》第六周学习总结

教材学习内容总结

Android stdio 结构

  • .idea:AS生成的工程配置文件,相似Eclipse的project.properties。
  • app:AS建立工程中的一个Module。
  • gradle:构建工具系统的jar和wrapper等,jar告诉了该工程如何与系统安装的gradle构建联系
  • build:构建目录
  • libs:依赖包,包含jar包和jni等包。
  • src:源码
  • main:主文件夹
  • java:Java代码,包含工程和新建是默认产生的Test工程源码。
  • res:资源文件
  • layout:App布局及界面元素配置
  • menu:App菜单配置
  • values:
  • dimens.xml:定义css的配置文件。
  • strings.xml:定义字符串的配置文件。
  • styles.xml:定义style的配置文件。
  • ......:arrays等其余文件。
  • ......:assets等目录
  • AndroidManifest.xml:App基本信息(Android管理文件)
  • ic_launcher-web.png:App图标
  • build.gradle:Module的Gradle构建脚本css

    res目录结构

    res目录下全部的资源文件都会在R.java文件下生成对应的资源id,咱们能够直接经过资源id访问到对应的资源;这个R文件能够理解为字典,res下每一个资源都都会在这里生成一个惟一的id。html

  1. 图片资源
  2. 布局资源
  3. 菜单资源
  4. values目录
  5. raw目录(原生资源)
  6. 动画java

    活动

  7. Android程序逻辑和视图分离,每一个活动都能对应一个布局。
  8. 全部的活动都要在AndroidManifest.xml中进行注册才能生效,主活动还须要在标签内加入
  9. Intent是Android程序中各组件之间进行交互的一种重要方式,不只能够知名当前组件想要执行的动做,还能够在不一样组件之间传递数据。分为显式Intent和隐式Intent。android

    Intent和onSaveInstanceState()方法同样,结合Bundle对象能够来传递数据。web

Android的活动机制

  1. Android在默认状况下,每当启动一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。
  2. 每当按下Back或调用finish()方法销毁活动时,处于栈顶的活动会出栈。
    每一个活动都有如下四种状态:
  3. 运行状态
  4. 暂停状态
  5. 中止状态
  6. 销毁状态编程

    平常使用时,当切换一些应用的过程,有时会有一些应用自动返回到初始状态。其缘由就是应用处于中止状态,这种活动保存相应的状态和成员变
    量。但当其余地方须要内存时,这些活动因为内存不足会被系统回收。当Back回来的时候,执行onCreate()而不是onRestart()方法。app

Activity类中定义了7个回调方法,覆盖活动周期的每个环节。可将活动分为3种生存期。ide

  • 完整生存期(onCreate,onDestroy)
  • 可见生存期(onStart,onStop)
  • 前台生存期(onResume,onPause)
    Android官方活动生命周期示意图:

UI

  1. android:icon ="@drawable/ic_launcher" 的含义是引用了位于res/drawable目录下一个drawable对象。
  2. android:id是元素的惟一标识符,wrap_contentbiao表示当前元素的高度只要能包含里面的内容就行。
  3. ViewGroup是一个特殊的视图,它能够包含其余的视图,能够在一个布局文件中声明布局,或者在运行时经过编程添加布局。好比:LinearLayout(线性对齐),RelativeLayout(相对布局),FrameLayout,TableLayout(行列布局),GridLayout(栅格布局)。
  4. Toast是一个小的弹出对话框,用于显示一条消息做为给用户的反馈,而且不会替代当前的活动。
  5. AlertDiglog是一个为用户提供反馈的窗口。与Toast不一样的是会一直显示,直到失去焦点。
  6. LayoutInflater的做用相似于findViewById()。不一样点是LayoutInflater是用来找res/layout/下的xml布局文件,而且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。函数

    一、对于一个没有被载入或者想要动态载入的界面,都须要使用LayoutInflater.inflate()来载入;
    二、对于一个已经载入的界面,就可使用Activiyt.findViewById()方法来得到其中的界面元素。工具

    监听器

接口 方法
OnClickListener OnClick()
OnLongClickListener OnLongClick()
onFocusChangeListener OnFocusChange()
OnKeyListener OnKey()
OnTouchListener OnTouch()

一旦建立一个监听器接口的实现,能够将其传递给你想要监听的视图的相应的setOnXXXListener方法,其中XXX是事件名称。

实现监听器有四种方式:

  1. 使用匿名内部类的方式实现监听

    b1.setOnClickListener(new OnClickListener(){

    @Override  
         public void onClick(View v) {  
             // TODO Auto-generated method stub  
             Intent intet = new Intent(MainActivity.this,seekbar.class);  
             startActivity(intet);  
             //finish();  
         }  
    
     });
  2. 使用外部类的方式实现监听事件
  3. 使用接口方式实现监听事件
  4. 直接绑定到标签

教材学习中的问题和解决过程

问题1:Android中Activity和AppcompatActivity的区别
问题1解决方案:AppcompaActivity相对于Activity的主要的两点变化:

  1. 主界面带有toolbar的标题栏;
  2. theme主题只能用android:theme=”@style/AppTheme (appTheme主题或者其子类),而不能用android:style。 不然会提示错误: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

代码调试中的问题和解决过程

  • 问题1:多活动Toast显示不出
  • 问题1解决方案:一个控件只能有一个Listener,若是绑定多个点击事件,前面的事件会被覆盖。

代码托管

上周考试错题总结

问题1:下面代码中共有()个线程?

public class ThreadTest {
    public static void main(String args[]){
    MyThread myThread =new MyThread();
    Thread t1=new Thread(myThread);
    Thread t2=new Thread(myThread);
    t1.start();
    t2.start();
        }
    }
    class MyThread extends Thread {
     ...
    }

问题1解决方案:主函数也算一个线程,全部一共三个线程。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 150/200 2/2 20/20
第二周 200/400 1/3 20/40
第三周 100/500 1/4 10/50
第四周 200/700 1/5 15/65
第五周 1486/2186 1/6 15/80
第六周 1400/3586 1/7 18/98
  • 计划学习时间:15小时

  • 实际学习时间:18小时

参考资料

相关文章
相关标签/搜索