Android学习

Posted 20189214李熹桥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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小时

参考资料

以上是关于Android学习的主要内容,如果未能解决你的问题,请参考以下文章

Android代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段

Android 实用代码片段

Android 实用代码片段

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段

片段不去活动 [Android]