学习记录5
Android Studio 第 5 天学习记录
一、学习内容
(一)布局文件的深入学习
• 线性布局(LinearLayout)的属性细节
• 通过实际代码示例,进一步理解android:orientation属性,明确其值为horizontal时子控件水平排列,为vertical时垂直排列。
• 学习了android:gravity和android:layout_gravity的区别与作用。android:gravity设置的是控件内部内容的对齐方式,例如在TextView中可以让文字居中(center)、靠左(left)等;而android:layout_gravity是设置该控件在父布局中的对齐方式。
• 掌握android:layout_weight的使用技巧。在水平线性布局中,如果给多个子控件设置了权重,那么这些子控件会按照权重比例分配父布局的剩余空间。例如,有两个按钮,权重分别为1和2,那么在分配剩余空间时,第二个按钮会获得两倍于第一个按钮的空间。
• 相对布局(RelativeLayout)的高级用法
• 学习了更多相对定位的属性,如android:layout_above、android:layout_below、android:layout_toLeftOf、android:layout_toRightOf等。通过这些属性,可以让控件相对于其他控件进行定位,实现复杂的布局效果。
• 实践了如何通过android:layout_alignParent系列属性(如android:layout_alignParentTop、android:layout_alignParentLeft等)将控件定位到父布局的边缘,从而构建出以父布局为参照的布局结构。
(二)资源文件的管理与使用
• 字符串资源的动态引用
• 了解到可以通过代码动态获取字符串资源。例如,使用getString(R.string.string_name)方法可以在代码中根据需要获取strings.xml文件中定义的字符串,方便在不同场景下灵活使用字符串资源。
• 学习了如何在字符串资源中使用占位符。例如,在strings.xml中定义<string name="welcome">Welcome, %1$s</string>,然后在代码中通过getString(R.string.welcome, "Kimi")来替换占位符,实现动态生成欢迎语的功能。
• 图片资源的适配与管理
• 研究了不同分辨率图片资源的存放规则。Android Studio会根据设备的屏幕密度将图片资源存放在不同的文件夹中,如drawable-mdpi(中等密度)、drawable-hdpi(高密度)、drawable-xhdpi(超高密度)等。通过这种方式,可以为不同屏幕密度的设备提供合适的图片资源,避免图片模糊或拉伸变形的问题。
• 学习了如何使用vectorDrawable资源。这是一种矢量图形资源,相比传统的位图图片资源,它具有文件小、可无限缩放且不失真等优点。通过在drawable文件夹下创建.xml文件并定义矢量图形的路径等属性,就可以在布局文件或代码中使用这种矢量图形资源。
(三)事件处理机制的初步探索
• 按钮点击事件的监听
• 学会了为按钮设置点击事件监听器。通过button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 在这里编写点击事件的处理逻辑 } })代码,当按钮被点击时,可以执行相应的操作,例如弹出一个提示框、跳转到另一个界面等。
• 探索了匿名内部类和外部类作为监听器的优缺点。匿名内部类的代码简洁,适合在局部使用;而外部类可以实现更复杂的逻辑,并且可以在多个地方复用。
• 其他控件事件的简单了解
• 对EditText的文本变化监听(TextWatcher)有了初步的认识。通过为EditText设置addTextChangedListener,可以在用户输入文本时实时获取文本内容的变化,例如实现输入验证、动态更新界面等功能。
• 了解了ListView的点击事件监听(OnItemClickListener)。当用户点击ListView中的某一项时,可以通过监听器获取被点击项的位置和数据,从而实现跳转到详情页面等操作。
二、实践操作
• 制作一个简单的登录界面
• 使用线性布局和相对布局相结合的方式,创建了一个包含用户名输入框(EditText)、密码输入框(EditText)和登录按钮(Button)的登录界面。
• 为登录按钮设置了点击事件监听器,在点击事件中获取用户名和密码输入框的内容,并通过Toast提示框显示输入的用户名和密码(实际开发中密码不会这样直接显示,这里是为了学习目的)。
• 将界面的文本内容(如用户名、密码、登录等)都定义在strings.xml文件中,并通过动态引用的方式在布局文件中使用,方便后续的语言国际化等操作。
• 适配不同屏幕的图片展示界面
• 准备了几张不同分辨率的图片,并按照Android Studio的规则将它们分别存放在对应的drawable文件夹中。
• 在布局文件中使用ImageView来展示图片,并通过设置android:scaleType属性(如fitCenter、centerCrop等)来控制图片的显示效果,观察在不同屏幕尺寸和密度的模拟器上图片的显示情况,确保图片在各种设备上都能正常显示。
三、遇到的问题及解决方法
• 问题:在为按钮设置点击事件监听器时,出现NullPointerException
• 原因:在代码中通过findViewById获取按钮对象时,由于布局文件中按钮的id拼写错误,导致获取到的按钮对象为null,进而引发了NullPointerException。
• 解决方法:仔细检查布局文件中按钮的id和代码中findViewById中的id是否一致,确保拼写正确。同时,在获取控件对象后,养成检查是否为null的习惯,避免类似的错误。
• 问题:图片在部分设备上显示模糊
• 原因:没有为该设备对应的屏幕密度提供合适的图片资源,导致系统自动拉伸低分辨率的图片来适配高密度屏幕,从而出现模糊现象。
• 解决方法:为不同屏幕密度的设备准备合适的图片资源,并正确地存放在对应的drawable文件夹中。同时,检查ImageView的android:scaleType属性设置是否合理,避免因为图片缩放方式不当导致模糊。
四、总结与展望
今天对Android Studio中的布局文件、资源文件和事件处理机制有了更深入的学习。通过实践操作,加深了对这些知识点的理解,并且能够初步运用它们制作简单的界面和实现基本的交互功能。在学习过程中,也遇到了一些问题,但通过分析和解决这些问题,进一步巩固了知识。
接下来,我计划继续深入学习事件处理机制,包括更多控件的事件监听和事件传递机制。同时,开始学习如何使用Android Studio进行网络请求和数据存储操作,为开发更复杂的应用功能打下基础。

浙公网安备 33010602011771号