zoukankan      html  css  js  c++  java
  • 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构建脚本

    res目录结构

    res目录下所有的资源文件都会在R.java文件下生成对应的资源id,我们可以直接通过资源id访问到对应的资源;这个R文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的id。

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

    活动

    1. Android程序逻辑和视图分离,每个活动都能对应一个布局。
    2. 所有的活动都要在AndroidManifest.xml中进行注册才能生效,主活动还需要在标签内加入
    3. Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以知名当前组件想要执行的动作,还可以在不同组件之间传递数据。分为显式Intent和隐式Intent。

    Intent和onSaveInstanceState()方法一样,结合Bundle对象可以来传递数据。

    Android的活动机制

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

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

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

    • 完整生存期(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等)。

    1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
    2、对于一个已经载入的界面,就可以使用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小时

    参考资料

  • 相关阅读:
    ubutun Sogou输入法安装
    git的使用
    比较字符串(包含以及变位词)
    python 与时间有关的操作
    PyBrain库的example之NFQ流程图分析
    python之面向对象(继承)
    C/C++中一些不太注意到的小知识点--[锦集]
    python 有关引用的一些问题
    CMake尝鲜
    vim初探
  • 原文地址:https://www.cnblogs.com/Shambryce/p/10662059.html
Copyright © 2011-2022 走看看