请选择 进入手机版 | 继续访问电脑版

Android实训-Day3项目结构&Day4

[复制链接]
阿峻 发表于 2021-1-1 18:34:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Day3

请结合代码项目学习,代码都在此系列第一篇开头,代码中有许多注释。
一.条记

Day3的代码来看,就是在layout写布局,然后在src的MainActivity.java里决定使用哪个布局文件。
【项目布局】
src文件夹:存放代码的文件夹,中间有包布局。
gen文件夹:存放的是项目自动生成的设置java文件。开发者不能改动。
bin文件夹:存放一些编译生成的文件,是存放编译生成的apk安装包的位置
res文件夹:主流资源文件夹
            drawable-??dpi文件夹:存放不同分辨率的贴图
            layout文件夹:存放布局文件,指定控件显示效果和位置的文件。
AndroidManifest.xml 清单文件:存放项目设置的参数
【布局 Layout】
布局是摆放控件的规则。
Tip:
打开Windows显示文件扩展名的功能。
步调
控制面板 --- 检察种别:大图标 --- 文件资源管理器选项 --- 检察 --- 取消勾选“隐藏已知文件的扩展名” --- 确定
【保持项目统一(重要)】
每次新建项目后,需要执行如下操纵,让新创建的项目布局一致且精简。
1. 进入res---layout,删除activity_main.xml文件
2. 进入src---MainActivity.java代码,进入onCreate方法,
   更改setContentView(R.layout.activity_main);方法为
   setContentView(R.layout.fragment_main);
3.仔细删除MainActivity.java文件中除了onCreate以外的方法。
4.继续删除onCreate中的多余代码直到:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);
    }
5.生存(Ctrl+S)所有更改的文件后,再次运行步伐。

Tip:
在写代码的过程中,要善于使用自动补全的快捷键 Alt + /

【通用属性】
android:layout_width="match_parent"            宽度
android:layout_height="match_parent"        高度
可选值:(1) match_parent
            匹配父控件,上级多宽/长就多宽/长。
        (2) wrap_content
            包裹元素,内部的控件多宽/长就多宽/长。
        (3) fill_parent
            功能完全等同match_parent,通常使用match_parent
        (4) 手动输入一个固定宽度,单位dp
        
配景颜色,采用RGB记色法,红绿蓝(0-255),采用十六进制
在线颜色选择器(可根据选择的颜色得到形如 #fa7c09 的颜色代号):http://tools.jb51.net/static/colorpicker/
android:background="#fa7c09"
外边距
android:layout_margin="10dp"
尚有单独设置某个方向的属性
内边距
android:padding="100dp"
尚有单独这是某个方向的属性
设置某个布局或控件中子元素的重力方向
android:gravity="bottom|right"
【布局 Layout】
布局是摆放控件的规则,可以认为布局是一个透明的容器。
透明容器内部按照规则去摆放控件。
只关注android:开头的即可
LinearLayout 线性布局
线性布局表现内部的控件横着大概竖着排成一排。
android:orientation="vertical" 方向
可选值:horizontal(水平),vertical(垂直)

RelativeLayout 相对布局
在某个参照物的某个方向或位置,相对布局的第一步就是给参照物起一个名字(id).
相对布局中,如果不指定子控件的相对位置,默认都在左上角堆放
例子:创建一个新的布局文件
1)选中res---layout文件夹,右键---New---Android XML File
2)在弹出的窗口中的File栏,输入要创建的布局文件的名称(全英文小写,单词间使用_分割)
3)在下方的Root Element栏目中选择要使用的布局后点击Finish按键完成创建
给某个布局或控件起一个id
android:id="@+id/text1"

在某个参照物的右边
android:layout_toRightOf="@id/text1"
在某个参照物的左边
ndroid:layout_toLeftOf="@id/text1"
在某个参照物的下面
android:layout_below="@id/text1"
在某个参照物的上面
android:layout_above="@id/text1"
父控件的中间
android:layout_centerInParent="true"
在父控件的水平中心
android:layout_centerHorizontal="true"
在父控件的垂直中心
android:layout_centerVertical="true"
对齐父控件的左边
android:layout_alignParentLeft="true"
对齐父控件的右边
android:layout_alignParentRight="true"
对齐父控件的顶端
android:layout_alignParentTop="true"
对齐父控件的底部
android:layout_alignParentBottom="true"
对齐某个控件的左边/右边
android:layout_alignLeft="@id/btn1"
android:layout_alignRight="@id/btn1"
对齐某个控件的顶端/底部
android:layout_alignTop="@id/btn1"
android:layout_alignBottom="@id/btn1"
【设置要使用的布局文件】
1.进入src---MainActivity
2.在onCreate方法里,有一个setContextView方法

Tips:
1.如果步伐确定没有错误,项目还是有红叉,需要点击Project --- Clean 清理项目后再运行。
2.android:text="你好2" 直接在双引号中写显示的文字即可,黄线不需要关注。
3.无论操纵什么软件,都养成点击Ctrl + S的习惯
【如何按照比例布局?】
线性布局支持比例划分的。
//共同作用分宽度
android:layout_width="0dp"
android:layout_weight="2"
【布局嵌套】
布局之间可以嵌套,对于外层的布局而言,内层的布局也相当于一个控件。
理论上布局可以嵌套任意条理,但是为了性能起见,应该尽大概的少用嵌套。
【TextView 文本显示控件】
设置显示文字
android:text="我今晚想吃卷饼"

如果给TextView设置比力大的宽度和高度时,文字默认在左上。
可以通过设置重力方向来控制文字的位置。
android:gravity="center"

设置文字巨细(单位使用sp)
android:textSize="10sp"

设置为欣赏器的超链接
android:autoLink="web"

【Button 按钮】
Button是TextView的子类,拥有TextView的绝大多数属性。

另外身为一个子类,Button也对其父类TextView做出了一些改动。
比方:文字默认居中,增加了按钮的点击效果。
【ImageView  图片显示控件】
功能用于显示图片
设置显示的图片
android:src="@drawable/sdust"

图片定名规则:
1.不允许数字开头
2.不允许大写英文
3.不允许中文和特殊的符号

 
Day4

一.条记

【监听器 Listener】
雷同于提前先设定好某个“约定”(某个告竣的条件A→执行某段代码B·)。
如果在步伐运行的过程中告竣了这个条件A,则自动触发B。
如果在步伐运行的过程中没有告竣条件A,则永远不会触发B。
“万物皆对象”
xml中部署控件(控件必须有id) → .java中找到对象
【输出Log日志】
在步伐的关键节点输出一些调试信息,这些信息无法被用户感知,但是可以被开发者在配景截取。
例子:点击一下按钮,在配景输出一句调试信息。
捕捉日志的两种方式:
1.IDE(集成开发情况):Eclipse ?????????怎么没有
(1)确认当前的情况是否已经毗连到对应的模仿器上,点击Open Perspective...(右上角)
(2)选择新窗口中的DDMS窗口,点击Open按钮
(3)在DDMS窗口的Devices标签中,确认设备已经毗连
(4)确认毗连无误后回到编辑窗口的logcat窗口中
(5)在Logcat窗口的左上角,点击绿色的加号
(6)在新弹出的窗口中,前两个空输入标签名称(如MainActivity),点击OK按钮。
2.adb(安卓调试桥)---不做要求
需要先设置情况变量
进入到开发情况的目次下,有一个sdk文件夹,里面有一个platform-tools文件夹。
复制platform-tools的路径到情况变量中。
点击Win+R,输入cmd,回车。
在下令行黑窗口中,输入adb,回车,举行验证。
adb下令:
验证已经毗连的设备
adb devices
筛选Log
adb logcat -s 标签名称,比方:
adb logcat -s MainActivity
【语法:多态】
在Java中,父类引用可以指向子类对象。
多态:一种表达,多种状态。
多态触发的条件:
1.要有继续
2.子类要覆盖父类的方法
3.父类引用指向子类对象
【内部类】
1.成员内部类
成员内部类作为一个成员依附于另一个中,可以访问外部类所有的成员变量和方法。
成员内部类是跟外部类关系最精密的一种内部类。
  1. package com.test;//外部类public class Outer {        private String str = "这是外部类的私有成员变量";    private void method() {        System.out.println("这是外部类的私有成员函数");    }        //成员内部类    public class Inner{                public void test() {            //成员内部类可以调用外部类的变量和方法            System.out.println(str);            method();        }            }    }
复制代码
  1. package com.test;import com.test.Outer.Inner;public class Test {    public static void main(String[] args) {        // 实例化内部类        // 方式1:直接使用外部类对象去调用内部类         Outer outer = new Outer();        Outer.Inner inn = outer.new Inner();                //方式2:一步完成        Outer.Inner inn2 = new Outer().new Inner();                //也可以通过导包来省略外部类范例,直接使用内部类范例        Inner inn3 = outer.new Inner();                //在实际的使用中,成员内部类更多的是在外部类中使用        //即Inner直接在Outer中使用。                //测试内部类对外部类的访问        inn.test();    }}
复制代码
 
2.匿名内部类
匿名内部类是一个没有名字的类隐式地实现(继续)了一个接口(抽象类),
而且返回一个这个没有名字的类的对象。
性质:
1.没有构造方法
2.没有关键字class、extends、implements
匿名内部类的常见使用场合:
1.只用到这个没有名字的类一次
2.类定义后马上使用
3.类比力小
4.给类定名不会导致代码更容易被理解
5.通常用于传参
【自定义页面 Activity】
1.在src中创建自定义页面类
2.增补自定义页面类的继续和onCreate方法
3.自己写一个布局文件
4.给自定义的页面类设置自己写的布局文件
5.在清单文件中注册自定义页面(见下面的问题一)
清单设置文件如下:

 
二.心得

1.问题一

在src和layout下如果有两组或多组文件,那么哪一组才是主页面呢,因为.Java只有一个可以作为主页面。
比方现现在我的布局如下,MainActivity.java用的是activity_main.xml,而自己新建的MyActivity.java用的是activity_myxml

要看清单文件AndroidManifest.xml是如何设置的,里面有注释!
  1.                                                                                                                        
复制代码
2.问题2

cmd下输出日志,显示adb不是内部下令。因为没设置情况变量,把adb.exe的路径放到情况变量中就好了!

test是数据库标识
  1. mBtn.setOnClickListener(new OnClickListener() { //点击按钮配景就会输出日志内容                        @Override            public void onClick(View v) {                //输出一句配景日志(记得导包)                //参数一:日志的标签                //参数二:输出的内容                Log.d("test","Hello hbb");//cmd下输adb logcat -s test,数据库中就会有输出Hello hbb            }        });
复制代码
 
 
 
 
 
 
 
 
 
 

来源:https://blog.csdn.net/weixin_44593822/article/details/111997931
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )