本帖最后由 ludengke 于 2015-5-20 13:51 编辑
Android菜鸟饭团#Udacity Android#第二课 活动笔记
跟进篇:
工具的准备 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: JAVA_HOME值为:安装JDK的目录, 我的为C:\Program Files\Java\jdk1.6.0_34 CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;(注意前面的".;"要加上) Path: 在开始追加 .;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意前面的".;"要加上) 安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。
出现类似下面的画面表示安装成功了:(配置一定要正确,否则Android Studio启动不了) 创建一个项目和虚拟机 由于我们将从空白Activity类开始进行配置,因此大家可以点击“Next”执行设置流程的下面几个步骤。这里大家需要对该Activity类、主布局以及片段布局进行命名。大家也可以设置导航类型,在今天的示例项目中我们将其设置为“None”。下面这幅截图显示的是我们的设置方案看起来是什么样子。 在点击“Finish”之后,大家会看到如下图所示的Android Studio用户界面。其中窗口左侧为项目资源管理器,右侧则为工作区。在Android Studio中对项目进行设置之后,现在我们可以逐一查看Android Studio当中的各项关键功能。 2. Android虚拟设备(AVD) 所谓Android虚拟设备——或者简称AVD——是一套模拟器配置方案,它允许大家设定出与实际情况相符的Android设备型号。这就让开发者在多种多样的设备平台上运行并测试应用程序变得更为轻松。在Android虚拟设备功能的支持下,大家可以为Android模拟器指定需要模拟的硬件与软件组合。 创建Android虚拟设备的首选方式是通过AVD Manager。大家可以在Android Studio用户界面的Tools菜单中依次选择Android〉AVD Manager。(新建一个虚拟机并开启之后最好关闭酷狗音乐等一些其他的不必要的进程,以免对AVD的开启造成影响) 如果大家之前对开发环境的设置工作正确无误,那么Android虚拟设备管理器的界面应该如下图所示。 要创建新的AVD,我们需要点击右侧的“New…”、为AVD设定名称并如下图所示对虚拟设备进行配置。最后点击“OK”以创建自己的第一套AVD。 要使用我们刚刚创建好的AVD,首先需要在AVD管理器的列表中将其选中,然后点击窗口右侧的“Start…”。如果大家的AVD设置过程正确无误,那么Android模拟器在启动后应该如下图所示。 既然Android模拟器已经成功启动并开始运行,现在是时候启动我们的应用程序了。在“Run”菜单中选择“Run ‘helloworld’”——没错,在Android模拟器中运行应用程序就是这么简单。 跑起一个程序
先创建一个新的app 再在mainActivity.Java里面写上如下的代码设置主页面
f ragment_main.xml里面写上如下代码: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity$PlaceholderFragment"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listview_forecast"/>
<TextView android:layout_width="118dp" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="李奎霖" android:id="@+id/textView" android:layout_gravity="right|bottom" android:gravity="center" />
</FrameLayout> 在activity_main.xml里面写上如下代码: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" tools:ignore="MergeRootFrame" /> 也可以在这个界面直接拖拽拉到界面里 最后运行出来:
运行: 当应用启动时会默认执行MainActivity这个类的最下面placeholder fragment(占位符片段),他是我们在创建项目时候生成的一个静态内部类;fragment是Activity一个模块化的容器,在Activity中使用多个fragment 单击 fragment main 就会出现图形化的编辑界面,这个Xml文件项目在Res目录下,当actiyity在执行时,他会根据XML资源文件创建一个placeholderfragment布局,他会根据XML文件里描述的对象视图等创建并放在内存里,点击windows下ctrl键,然后单击fragment_main这个资源引用,android studio就会i呈现一个图形化的编辑界面。 创建一个layout(布局):在res/layout目录下新建布局源文件;list item 末项;
同伴的感想: 在跑这个小程序的时候,遇到了很多的困难,毕竟是第一次使用android studio 很多的使用方法都不知道,视频中讲了第一步是要创建一个工程,名为Sunshine,而制作这个小软件的第一步就是要制作他的主页面(UI),这个主页面是线性布局,即内容是分条显示出来,意识到这一点是至关重要的,所以我们要手动创建一个layout文件,根项目为textview,并且设置一个最低的高度(如果不设置的话,那么,每个内容条的距离就会过近,看起来不方便), 接下来就是代码的部分了,每个项目执行的顺序的是从MainActivity开始执行的,所以代码写到MainActivity.java里边,
学过java就会知道,这段代码的意思就是穿件一个字符串数组,里边存放的是我们的天气信息,接下来,不好理解的一部分是这里: 有些部分已经给上了注释,mFrecastAdapter是listView为数据创建的一个适配器,里边都包含了getActivity();适配器所需要的各种Fragment组件,和文本的数据,R.layout的意思是自动生成用来统一定义我们所有资源文件的东东,所以对于列表的布局信息我们可以调用R.layout.list_item_forecast来得到,下一步适配器需要把天气情况的数据显示在一个TextView的组件里,所以我们通过调用之前给TextView创建的那个ID就可以调用它了。(PS:R.layout与R.id的区别是前者是布局文件中的相关内容,而后者是从XML文件中精确的定位到你曾为其设定的某个ID的元素)最后是实现List与Adapter的绑定,通过查找ID的方式绑定。
其他
Activity 简单来说就是一个界面,手机的一个桌面就是一个activity,软件的一个界面都是activity 1.Activity特点 通过后退键和home键返回activity 通过一个activity进入另一个activity
建议通过@string配置activity文字,f3快捷键进入配置文件中,
通过这种字符串输入方式可以很容易支持多语言,更方便 摘自论坛: android:text=""引号里的一般直接显示,但是@string就表示引用了string资源。你去res\values\下应该能找到一个 string.xml的文件。里面有<string name="hello_world">Hello World</string>这行代码,当然不一定是写的Hello World。这就是定义了一个string资源。你可以吧两个尖括号中的字改了,再运行就会发现变成你改了之后的字。 2.Activity绑定自定义视图 选中常量按快捷键f4进入R.java R.java由资源文件动态生成
Android程序是从onCreate函数开始执行的 Activity通过setContentView来指定一个视图用来呈现内容 通过右键Refacto->Rename改名 发现R.java全自动的根据layout文件里的activity文件改名
可以把activity绑定其他自定义的布局(layout), 生成全新布局 MainActivity.java文件中已经生成了自定义的my_layout新布局
通过这种方式修改activity所绑定的布局
Project的目录结构 1).manifests 包涵文件AndroidMainifest.xml 是程序的配置文件 2).java 程序所有源代码存放的目录 3).res 资源文件存放目录 3.启动自定义的activity
在my_layout上创建一个Button按钮 进入text更改button名字,和id 之后在mainActivity通过findViewById()访问button的id
可以发现只要在布局文件中定义了btnStarAnotherAty这个id,我们就可以在mainactivity中直接访问这个id 设置一个setOnClickListener事件处理监听器,处理点击事件的接口?不清楚 new一个onclicklistener,按回车系统自动帮助生成 在onclick函数中启动一个activity 首先先创建一个activity, 可以创建一个java class,然后继承activity 还可以通过系统给的默认设定好的activity模板, new->activity 用模板的话,系统全自动的为我们提供layout文件,和一个类文件,在AndroidMainifest.xml文件中帮我们配置一个activity的标签 其他开发环境都需要手动操作
通过一个api:startActivities(); 创建一个new intent Intent括号里应当传进一个context 通过starActivity传一个intent实例,通过这个实例配置启动的目标activity 原来是函数调用错误,starActivity调成starActivities,结果报错 实验成功了,两个activity实现了互相转换。这种activity转换在很多程序中有广泛的应用。
解决的问题
问题1: View rootView = inflater.inflate(R.layout.fragment_main, container, false); 其中的inflater.inflate(R.layout.fragment_main, container, false)表示什么? 问题2: Wrap_content表示? 答案: 三个属性都用来适应视图的水平或垂直大小,一个以视图的内容或尺寸为基础的布局比精确地指定视图范围更加方便。 1)fill_parent 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。 2) wrap_content 设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。 3)match_parent
Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了 问题3:findViewByid是什么意思 在android里具体是干什么用的? 答案: android 的用户界面一般使用xml文件做的,对应的xml文件在layout包下
如果xml里放了个按钮什么的,在activity中要获取该按钮就用
findViewById(R.id.xml文件中对应的id)
【书记员:鲁登科】 每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。 Android菜鸟饭团由南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。 |