近来学习总结

从刚开始接触Android课到现在,确实学到了不少东西,当然也碰到过一些问题。就从最开始的布局文件开始说起吧。
说到布局文件首先要说的就是各种Layout了,以我现在的所知,Layout有五大类,下面将进行一些简单的介绍,毕竟我们还没有将这几种Layout全部掌握。这阵子,使用的最多的就是LinearLayout的布局方式了,其它的暂时没有使用过,所以我就只着重的说一下LinearLayout。
这种布局方式是最简单的一种布局了,以行或者列的方式来添加控件,每一行或者每一列只能添加一个控件。在LinearLayout中有一个重要的属性gravity,这个属性用来指定组件内容的对齐方式,使用的方式也很多样化。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal">
</LinearLayout>

布局之后就是各种各样的控件了,正是因为这些控件,我们才能和手机有一个良好的交互的界面。这段时间里使用的最多的就是TextView、EditView、Button、RadioButton、CheckBox了。这些控件每一个都有其特定的用法,从而为用户处理一些其需要处理的事情。
布局做好之后就是为程序所想要实现的功能进行编码,这部分才是最重要的。前面一些定义组件,获取组件什么的就不说了。
但是值得注意的是,在获取控件对象之后就类型的强制转换时要注意类型的对应,比如下面的代码是正确的:

private EditText et_name;
et_name = (EditText) findViewById(R.id.name);

而这样的代码是错误的:

private EditText et_name;
et_name = (TextView) findViewById(R.id.name);

这是因为,声明的类型和需要转换的类型不一致,在布局文件中对应的组件可能和转换的类型也不一致,这一点要格外的注意,否则就会出错的。
下面就要按照各种功能的需求去写功能实现所需要的代码了,在这段时间里接触的最多的就是重写AppCompatActivit类下面的各种方法,因为我们所建立的Activity所属的类是继承自AppCompatActivit类,这个类提供了各种各样处理事件的方法。每次都自动生成重写下面的代码:

 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}

在没有触发其它响应事件的时候,程序也会从这里开始运行。
在这段时间的学习里用的最多的就是对按钮进行的事件监听:

        Button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {}});

这个监听事件就是当Button按钮被点击的时候才会触发的,相应的,如果在里面写一些事件处理的代码,那么这个时候就会开始对事件进行处理,直至这个方法的结束。
然后学的也是各种各样的监听事件,当然这些事件都要进行重写,才能达到我们自己想要的功能。
屏幕触控事件:当屏幕被点击的时候就会触发这个方法

@Overridepublic boolean onTouchEvent(MotionEvent event) {return super.onTouchEvent(event);}

当然还有其它的很多的监听事件,这里就不一一写出了。
然后就学习了一些关于Menu的知识,说实话,这一部分我还学的有点模糊,就是只是按照代码机械的去敲,感觉自己还是没有真正的理解这部分的知识。
在做菜单的时候,有多种方法,可以在Activity里直接把菜单写出来,也可以在Layout里写一个菜单的布局文件,只是后者需要在Activity中进行菜单的加载。下面是选项菜单的部分代码:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.menu,menu);return true;}

这样的方式就是加载写在XML布局文件的方式来加载出菜单,使应用程序能够显示出菜单。还有给菜单项注册事件,下面的代码里对菜单项被点击时就行了一些简单的事件响应,并进行了一些简单的处理。

 @Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.item_info_maintain:Toast.makeText(this,item.getTitle().toString(),Toast.LENGTH_SHORT).show();break;case R.id.item_about:break;case  R.id.item_exit:break;}return super.onOptionsItemSelected(item);}

再就是上下文菜单,上下文菜单的加载方式有点特殊,那就是必须在onCreate方法中进行注册,并且是给相应的对象进行注册,否则的话就没有任何效果,这是写了一个最简单的上下文菜单:

@Overridepublic void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, view, menuInfo);switch(view.getId()){case R.id.name:menu.add(0,100,0,"选择");break;}}

然后在onCreate方法中进行注册:

this.registerForContextMenu(et_name);//将上下文菜单注册到姓名的输入框

这里我是给一个EditText进行注册的,但是并没有进行事件的处理,所以写的很简单。
然后又学到了对话框Dialog,其实我个人并不喜欢称这个为“对话框”,因为以前学过易语言,我还是喜欢沿袭当时的习惯,称这个为“信息框”,只是易语言里的信息框没这么多功能而已。,这里就不过多的提了。对话框呢,能够处理的事件还是挺多的。我们只是简单的接触了一下AlertDialog,还没有进行深入的应用学习,我也没有进行深入的探索,这周找个时间需要弄一下。下面呢就是在选项菜单的基础上写了一个AlertDialog,由于这个AlertDialog功能比较简单,而且其它附加的代码又比较长,所以就不把全部的代码贴出来了。

    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {// 1:创建一个普通的DialogAlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);switch (item.getItemId()){case R.id.item_info_maintain:Toast.makeText(this,item.getTitle().toString(),Toast.LENGTH_SHORT).show();break;case R.id.item_about:// 2:给builder设置值builder.setTitle("关于");builder.setMessage("版本号:1.0");// 3:创建并显示builder.create().show();break;case  R.id.item_exit:builder.setTitle("提示");builder.setMessage("点击确定退出!");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//关闭dialogdialog.dismiss();MainActivity.this.finish();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});builder.setNeutralButton("没啥事",null);builder.create().show();break;}return super.onOptionsItemSelected(item);}

上面的这些代码里,其实是写了一个普通的带文本的对话框和一个带有三个按钮的对话框,从上面的代码中也能看出这两个对话框并没有实现什么厉害的功能,所以就不过多的解释了。另外的事AlertDialog中可以按照上面的方法显示文本和按钮,也可以放一些CheckBox和Radio以及ListView,以用来处理不同的事件。
至于Notification,好像还没有学习到吧,我课下自己也没有去看,所以就不说了。
大致的说了一下这一个月来学习的东西,然后也做了几个没什么实用性的小程序,这其中也碰到过一些问题,不过都靠百度给解决了,所以那些无法完成的问题现在还没遇到过,毕竟学的很少。这段时间的学习中,我也发现了一些自己在Java上的不足之处,比如说对一些基本概念的不清晰,还有一些基本知识的忘却,都在提醒我去年学的Java知识已经忘掉很多了,所以接下来还是要多花点时间放在Java上,毕竟没有良好的Java基础,Android开发是做不好的。

转载于:https://www.cnblogs.com/wang-Jeft/p/6623313.html

Android--近来学习总结(2017/3/27)相关推荐

  1. android service 学习(上)

    转载自:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html Service是android 系统中的一种组件,它跟Activity ...

  2. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  3. Android:日常学习笔记(6)——探究活动(3)

    Android:日常学习笔记(6)--探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的 ...

  4. Android内核学习笔记

    0.android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...

  5. Android SurfaceFlinger 学习之路(五)----VSync 工作原理

    原址 VSync信号的科普我们上一篇已经介绍过了,这篇我们要分析在SurfaceFlinger中的作用.(愈发觉得做笔记对自己记忆模块巩固有很多帮助,整理文章不一定是用来给别人看的,但一定是为加强自己 ...

  6. 分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(5月27日-6月3日)

    分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(5月27日-6月3日) 本周Silverlight学习资源更新 XAML实例教程系列 - 命名空间(NameSpac ...

  7. Android Studio 学习实例记录-手电筒

    Android Studio 学习实例记录-手电筒 刚安装好Android Studio3.1.2,上网搜了一个实例进行实践学习,仅用这篇文章来记录学习过程 MainActivity.java的源码来 ...

  8. android博客导航总结,以及个人常用android免费学习干货(文章,视频,矢量图,字体等)资源分享?

    android博客导航总结与资源分享 1.博客总结 1.mob平台的使用 2.QMUI部分功能实现 3.XUI部分功能实现 4.其他功能 5.Flutter博客总结: 2.资源分享 1.文章类型资源分 ...

  9. Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程

    Android 框架学习1:EventBus 3.0 的特点与如何使用 Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线 Android 框架学习3:我从 EventB ...

最新文章

  1. java面向过程和面向对象
  2. 来看看C# ObservableCollection和List的区别
  3. TransactionAwareDataSourceProxy
  4. JQuery快速入门-选择器
  5. java快捷键查看目录,java取得快捷方式指向的路径
  6. 自定义按键_王者荣耀:自定义按键让你的百里守约百发百中
  7. 在C#中,不安装Oracle客户端如何连接Oracle数据库
  8. 用java语言编写石头剪刀布获胜法_石头剪刀布Java实现
  9. 再聊如何通过基金定投达到十年十倍?
  10. Android聊天软件开发(基于网易云IM即时通讯)——发送视频消息(六)
  11. 用android编写计数器前后台源代码,在Android中实现计数器
  12. 十行Python代码替换证件照背景颜色
  13. qq html 文件,qq怎么传送html文件
  14. 蒜头君的藏书(映射)
  15. MYSQL数据库跨服务器实时同步更新实践----文献阅读(污水管网水质预测)
  16. 认识Android应用开发(一)
  17. selenium之浏览器弹出新窗口(新页面)
  18. (转)Google Voice呼转到中国电话的五种方法
  19. Oracle回收站及flashback drop(上)
  20. 给文本文件每一行加行号

热门文章

  1. elasticSearch入门到java操作api一套搞定
  2. VUE—从入门到飞起(二)
  3. 【LeetCode】390.消除游戏
  4. 关于代码评审的微博讨论汇集
  5. 怎么在HTML中加个日历,HTML中如何添加日历插件(JQUERY)
  6. 神策数据荣登《中国企业家》“未来之星”榜单
  7. 云管理成功的关键:应用工作流
  8. day4-生成器并行运算
  9. Linux chmod 命令 详解
  10. 不仅仅是虚拟化--Windows 7 SP1 Windows 2008R2 SP1解析