第十章 高级编程_第1页
第十章 高级编程_第2页
第十章 高级编程_第3页
第十章 高级编程_第4页
第十章 高级编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章高级编程10.1Notification的使用10.5动画10.3多媒体10.2摄像头与相册10.4MaterialDesign体验10.6小结8.7小结10.1Notification的使用通知(Notification)是Android系统提供的一种具有全局效果的通知功能,可以在系统通知栏中显示。当APP向系统发出通知时它将先以图标的形式显示在通知栏中。用户可以下拉通知栏查看通知的详细信息。通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。想要了解通知的基本概念我们先来看一下通知的使用方法。通知的创建比较灵活,可以在活动中创建也可以在广播接收器中创建,当然也可以在我们上一章学习的服务中创建,相比后两种创建方式,在活动中创建通知的情况比较少见,一般只有当程序进入后台执行时才会需要这种类型的通知。10.1Notification的使用Android8.0系统之后,Google推出了通知渠道的概念。通知渠道是开发人员在创建通知的时候为每个通知指定的渠道,你也可以理解成是通知类型。属于同一通知渠道的通知可以进行统一管理。创建的方法也不难,首先创建NotificationChannel对象,指定Channel的id、name和通知的重要程度,代码如下所示:然后使用NotificationMannager的createNotificationChannel方法来添加Channel,代码如下所示:NotificationChannelchannel=newNotificationChannel("channel_id","channel_name",NotificationManager.IMPORTANCE_DEFAULT);getNotificationManager().createNotificationChannel(channel);运行程序点击SENDSERVICE按钮,可以系统状态来左边看到小图标并且从下拉通知状态来可以看到通知的详细信息,如右图想要实现通知信息的点击效果我们还需要在代码中进行相应设定,这就是新的概念PendingIntent。PendingIntent类似于Intent,但是与Intent倾向于立即执行某个动作的操作不同,PendingIntent更倾向于在某个合适的实际去执行某个动作,也可以理解成延迟执行的Intent。用法很简单,PendingIntent提供了几个静态方法来获取实例,包括getActivity()方法、getBroadcast()方法以及getService()方法。10.1Notification的使用10.2摄像头与相册10.2.1调用摄像头首先创建File对象用于存放摄像头拍下的图片,并将拍摄到的图片命名为output_image.jpg存放于手机SD卡的应用关联混村目录下,通过调用getExternalCacheDir()方法得到这个目录。接下来构建Intent对象,并通过Intent对象的action指定android.media.action.IMAGE_CAPTURE隐式启动摄像机,在调用Intent的putExtra方法指定图片输出路径。Google对Android高版本使用用户数据的权限越来越严,因此本例中涉及到保存到SD卡的权限以及使用摄像机的两个权限需要申请运行时权限。10.2摄像头与相册10.2.2相册使用在openAlbm()方法中,我们先构建出隐式Intetn对象,并将它的action指定为ent.GRT_CONTENT。为这个Intent对象设置必要的参数,然后调用数据回传的启动方式startActivityForResult()方法启动。当我们从相册选择完照片回到onActivityResult()方法时会根据整形常量选择不同的分支处理图片。接下来根据手机Android系统的版创建了两个方法handleImageHigh()和handleImageBefor()方法,分别用来处理不同AndroidSDK版本的图片。MediaPlayer是用于播放音频和视频的,它支持多种格式音频文件(3gp、mp4),并提供了非常全面的控制方法。10.3多媒体方法名称功能描述setDataSource()设置要播放的音频文件的位置prepare()在开始播放之前调用这个方法完成准备工作start()开始或继续播放音频pause()暂停播放音频reset()将MediaPlayer对象重置到刚刚创建的状态seekTo()从指定位置开始播放音频stop()停止播放音频,调用该方法后MediaPlayer对象无法在播放音频release()释放掉与MediaPlayer对象相关的资源isPlaying()判断当前MediaPlayer是否正在播放音频getDuration获取载入的音频文件的时长…………MediaPlayer常用方法MediaPlayer接收音频类型有很多,其中有四种较为常用的类型:AudioManager.STREAM_MUSIC(音乐)AudioManager.STREAM_RING(响铃)AudioManager.STREAM_ALARM(闹钟)AudioManager.STREAM_NOTIFICTION(提示音)音频类型不同占据的内存空间也不同,音频时间越短占的内存越小MediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);10.3多媒体设置声音流类型设置数据源有三种方式,分别是播放应用自带的音频文件、播放SD卡中的音频文件、播放网络音频文件。10.3多媒体mediaPlayer.create(this,R.raw.xxx);mediaPlayer.setDataSource("mnt/sdcard/xxx.mp3");mediaPlayer.setDataSource("http://www.xxx.mp3");应用程序自带音频文件SD卡中音频文件网络音频文件10.3.2VideoView播放视频播放视频文件与播放音频文件类似,视频文件需要使用视觉组件将影像展示出来。在Android中主要使用VideoView组件播放视频。它将视频的显示和控制集于一身,借助这个控件就可以完成简易的视频播放器。10.3多媒体方法名称功能描述setVideoPath()设置要播放的视频文件的位置start()开始或继续播放视频pause()暂停播放视频resume()将视频重新开始播放seetTo()从指定位置开始播放视频isPlaying()判断当前是否正在播放视频getDuration()获取载入的视频文件的时长VideoView常用方法创建VideoView视频播放为VideoView添加控制器<VideoViewandroid:id="@+id/videview"android:layout_width="match_parent"android:layout_height="wrap_content"/>10.3多媒体VideoViewvideoView=(VideoView)findViewById(R.id.videview);//播放本视频

videoView.setVideoPath("xxxx");//加载网络视频

videoView.setVideoURI(Uri.parse("https://xxxx"));videoView.start();使用VideoView播放视频时可以添加一个控制器MediaController,这是一个包含美丽播放器控件的视图,包含一些典型的按钮,像播放/暂停、倒带、快进与进度华东其。它管理媒体播放器的状态以保持控件的同步,示例代码如下所示:MediaControllercontroller=newMediaController(context);//为VideoView绑定控制器

videoView.setMediaController(controller);10.3多媒体10.4.1什么是MaterialDesignMaterialDesign是由Google的设计工程师们基于传统优秀的设计原则,结合丰富的创意和科学技术所开发的一套全新的界面设计语言,包含了视觉、运动、互动效果等特性。为了做出表率,Google从Android5.0系统开始,就将所有内置的应用都使用MaterialDesign风格进行设计。10.4MaterialDesign体验10.4.2ToolbarToolbar控件是由appcompat-v7库提供的。添加控件的时候需要为Toolbar制定一个id,并将它的宽度设置为match_parent,高度设置为?attr/actionBarSize即ActionBar高度。10.4MaterialDesign体验<FrameLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.Toolbarandroid:id="@+id/tool_bar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"></android.support.v7.widget.Toolbar></FrameLayout>不过只有一个标题的Toolbar看起来太单调了,我们还可以再添加一些action按钮来让Toolbar更加丰富一些。创建一个toolbar.xml菜单文件,并编写如下代码:10.4MaterialDesign体验<menuxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"><itemandroid:id="@+id/backup"android:icon="@mipmap/ic_backup"android:title="Bakup"app:showAsAction="always"/><itemandroid:id="@+id/friend"android:icon="@mipmap/ic_friends"android:title="Friends"app:showAsAction="ifRoom"/><itemandroid:id="@+id/mail"android:icon="@mipmap/ic_mail"android:title="Mail"app:showAsAction="never"/></menu>最后在Activity中编写如下代码来启用Toolbar和创建的菜单:10.4MaterialDesign体验publicclassMainActivityextendsAppCompatActivity{……@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.toolbar,menu);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.backup:Toast.makeText(this,"YouclickBackup",Toast.LENGTH_SHORT).show();break;caseR.id.mail:……}returntrue;}}10.4.3活动菜单活动菜单是MaterialDesign中最常见的效果之一,借助Google提供的各种工具,我们可以轻松的实现炫酷的活动菜单效果。DrawerLayout使用NavigationView的使用10.4MaterialDesign体验在Android开发中,避免不了用到动画,Android中的动画分为补间动画和逐帧动画两种。10.5动画补间动画通过对View中内容进行一系列的图形变换来实现动画效果,其中图形变化包括平移、缩放、旋转、改变透明度等。按照事先准备好的静态图像顺序播放的,利用人眼的“视觉暂留”原理,给用户造成动画的错觉。逐帧动画10.5.1补间动画在Android中,提供了四种补间动画:透明度渐变动画(AlphaAnimation)旋转动画(RotateAnimation)缩放动画(ScaleAnimation)平移动画(TranslateAnimation)10.5动画透明度渐变动画(AlphaAnimation)透明度渐变动画是通过改变View组件透明度来实现的渐变效果。它主要通过为动画指定开始时的透明度、结束时的透明度以及动画持续时间来创建动画。10.5动画10.5动画<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><alphaandroid:interpolator="@android:anim/linear_interpolator"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="1000"android:fromAlpha="1.0"android:toAlpha="0.0"/></set>控制动画的变化速度(匀速)设置动画重复的方式(反向)设置动画重复次数(无限循环)指定动画播放时长指定动画开始时的透明度(不透明)指定动画结束时的透明度(透明)旋转动画(RotateAnimation)旋转动画是通过为动画指定开始时的旋转角度、结束时的旋转角度以及动画播放时长来创建动画的。10.5动画10.5动画<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><rotateandroid:fromDegrees="0"android:toDegrees="360"android:pivotX="50%"android:pivotY="50%"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="1000"/></set>指定动画开始时的角度(原始位置)指定动画结束时的角度(360°)指定轴心的X坐标指定轴心的Y坐标缩放动画(ScaleAnimation)缩放动画是通过为动画指定开始时的缩放系数、结束时的缩放系数以及动画持续时长来创建动画的。10.5动画10.5动画<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="/apk/res/android"><scaleandroid:repeatMode="reverse"android:repeatCount="infinite"android:duration="3000"android:fromXScale="1.0"android:fromYScale="1.0"android:toXScale="0.5"android:toYScale="0.5"android:pivotX="50%"android:pivotY="50%"/></set>指定动画开始时X轴上的缩放系数(不变化)指定动画开始时Y轴上的缩放系数(不变化)指定动画结束时X轴上的缩放系数(缩小0.5倍)指定动画结束时Y轴上的缩放系数(缩小0.5倍)平移动画(TranslateAnimation)平移动画就通过为动画指定开始位置、结束位置以及动画持续时长来创建动画的。10.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论