自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

转载 Android性能优化系列之内存优化

在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,上篇博客,我介绍了 Android性能优化系列之布局优化,本篇博客,我将介绍内存优化的相关知识。内存的分配策略概述程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的,对应的,三种存储策略使用的内...

2018-08-16 14:19:29 946

转载 Android性能优化系列之布局优化

在Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性、复杂度也会随之增长,这样使得UI布局的优化,显得至关重要,UI布局不慎,就会引起过度绘制,从而造成UI卡顿的情况,本篇博客,我就来总结一下UI布局优化的相关技巧。学会使用布局标签优化布局(1)<include>标签 include标签常用于将布局中的公共部分提取出来供其他layo...

2018-08-16 14:16:34 191

转载 Android性能优化系列之apk瘦身

为什么APK要瘦身。APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要,本篇博客将讲述apk瘦身的相关内容。包体分析在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包...

2018-08-16 13:56:23 170

原创 Android Studio安装插件提示was not installed: Cannot download的解决办法(仅限AS2.2版本以上)

这是报错消息:Plugin Android ButterKnife Plugin Plus was not installed: Cannot download 'http://plugins.jetbrains.com/pluginManager/?action=download&id=life.iuni.android.plugin.butterknife&build=AI-1...

2018-07-03 19:27:57 906

原创 获取手机的音频文件展示并播放

获取手机的音频文件展示在ListView 点击一个播放一个/** * 获取手机上的所有音乐点击开始播放 */public class MainActivity extends AppCompatActivity { private ListView listView; // 获取外部存储的 音频文件 也可以 修改为 视频 Vedio 或内部存储 private U

2017-10-25 14:08:19 1043

转载 IntentService使用详解和实例介绍

IntentService定义  IntentService继承与Service,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。IntentService在onCreate()函数中通过HandlerThread单独开启一个线程来依次处理所有Intent请求对象所对应的任务。       这样以免事务处理阻塞主线程

2017-09-20 09:29:55 377

原创 详解Android中IntentService的使用方法

为什么我们需要IntentService ?Android中的IntentService是继承自Service类的,在我们讨论IntentService之前,我们先想一下Service的特点: Service的回调方法(onCreate、onStartCommand、onBind、onDestroy)都是运行在主线程中的。当我们通过startService启动Service之后,我们就需要在S

2017-09-20 09:26:55 7771

原创 FragmentPagerAdapter与FragmentStatePagerAdapter区别

【ViewPager】ViewPager 如其名所述,是负责翻页的一个View。准确说是一个 ViewGroup,包含多个View 页,在手指横向滑动屏幕时,其负责对 View 进行切换。为了生成这些 View页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的View 页。setAdapter()ViewPager 通过setAdapte

2017-09-15 09:32:49 186

转载 浅谈Android中的LOG查看ANR(一)

转自:http://yinger-fei.iteye.com/blog/1533788手机中pull处理trace.txt进去 data/anr 再pull 一:什么是ANR                  ANR:Application Not Responding,即应用无响应二:ANR的类型                  ANR一般有三种类型

2017-09-01 14:48:48 2736

原创 Android中自定义ContentProvider及用法

一。自定义ContentProvier时,需要继承ContentProvider,并实现其中的6个方法:onCreate():一般完成数据库的创建,当指定数据库不存在时,则创建一个数据库,当已经存在时,则不再执行该方法,即该方法之执行一次;insert():插入数据;query():查询数据;delete():删除数据;update():修改数据;getType():会根据

2017-09-01 14:47:08 302

原创 Android 中ContentProvider的用法及用ContentProvider访问联系人

一。概念: * ContentProvider,内容提供者,android四组件之一,可以跨程序访问数据; * 若用ContentProvider实现不同应用程序之间数据的共享,必须借助ContentResolver(内容解析器)类, * 1.获得ContentResolver对象:Context.getContentResolver(); * 2.通过ContentResolve

2017-09-01 14:46:11 303

原创 Android 数据存储(三) 数据库存储

在Android的数据存储机制中,文件存储和共享参数存储只适合存储一些简单的数据,如果要存储复杂数据,就需要使用到SQLite数据库存储,在Android中系统内置了数据库,运算速度快,占用资源也比较少。一。创建数据库:创建数据库时,用到了SQliteOpenHelper类,这是一个抽象类,故继承它,并实现它的两个方法:onCreate(),onUpdate();onCreate():

2017-09-01 14:44:56 192

原创 Android 数据存储(二)文件存储

在android中数据存储分四种:文件存储,共享参数存储,外部存储,数据库存储,各自都有优势和缺点,本文章主要了解文件存储。一。存储原理及步骤:文件存储的原理就是用IO流的原理,对数据进行写入和读出,具体步骤如下:1.用openFileOutputStream()和openFileInputStream()得到FileOutputStream/FileInputStream;2.通过F

2017-09-01 14:43:40 241

原创 Android 数据存储(一) 共享参数存储

一。原理:SharedPreferences是采用键值对对数据进行存储的,当存入数据时,给数据设置一个对应的键,取出数据时,就可以根据键获取到相应的数据。二。步骤:1.得到SharedPreferences对象;得到共享参数实例的方式有三种:  1.Context.getSharedPreferences();  2.Acitvity中:getPreferences();  3

2017-09-01 14:42:32 790

原创 adb操作命令详解及大全

adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行

2016-11-24 16:28:49 290

转载 unity3D的面试题

第一部分1.请简述值类型与引用类型的区别2.C#中所有引用类型的基类是什么3.请简述ArrayList和List的主要区别4.请简述GC(垃圾回收)产生的原因,并描述如何避免?5.请描述Interface与抽象类之间的不同6.下列代码在运行中会产生几个临时对象?7.下列代码在运行中会发生什么问题?如何避免?8.请简述关键字Sealed

2016-11-16 16:04:12 11760 2

原创 Unity3D游戏开发之详解 Animation类和Animator类

Animation类animation组件用于播放动画。可以指定动画剪辑到动画组件并从脚本控制动画播放。在的动画系统基于权重并且支持动画融合,叠加动画,动画混合,标签和完全控制动画播放的各个方面。如果想播放一个简单的动画,可以使用Animation.Play;如果想在动画之间交叉淡入,可以使用Animation.CrossFade;如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设

2016-11-16 14:25:46 2372

原创 unity自带寻路Navmesh入门教程(三)

继续介绍NavMesh寻路的功能,接下来阿赵打算讲一下以下两个例子,先看看完成的效果:  第一个例子对于喜欢DOTA的朋友应该很熟悉了,就是不同小队分不同路线进攻的寻路,红绿蓝三个队伍分别根据三条路线进攻。第二个例子是动态的控制道路的开关。当吊桥打开时,道路不通,当吊桥放下时,道路可以通行。先来说说第一个例子吧,第一个例子其实很简单,只需要在之前两节的基础上

2016-11-16 11:47:10 322

原创 unity自带寻路Navmesh入门教程(二)

上一节简单介绍了NavMesh寻路的基本用法,这次来介绍一下稍微复杂一点点的高低落差以及跳跃的做法,首先来看看这次的目标:  由于博客相册上传GIF有限制,所以我把整个过程切开了2部分上传,第一部分是爬楼梯,第二部分是横向跳跃和往下跳落      不管是爬楼梯,还是跳跃,NavMesh都是通过了OffMeshLink来做的。创建OffMeshLink的方法有两种,接

2016-11-16 11:45:03 308

原创 unity自带寻路Navmesh入门教程(一)

unity自从3.5版本之后,增加了NavMesh寻路的功能。在此之前,unity用户只能通过第三方插件(如Astar寻路插件)等做寻路功能。阿赵我也使用过A*寻路插件,A*的原理并不复杂,有兴趣的朋友可以自己百度一下。不过由于不是自带的功能,所以在设定网格和烘焙的过程难免会出现很多不便。NavMesh作为unity自带的功能,用法和之前的LightMapping烘焙或者遮挡剔除Occlusion

2016-11-16 11:43:25 1081

原创 Unity3D之太空大战二

接下来,我们要使飞船能发射子弹,所以我们要创建子弹模型,在资源中找到rocket.fbx模型文件,拖到Hierarchy中,这样就创建了子弹的游戏体,当然对于重复使用的游戏体,我们要做成预设体Prefab,我们打开菜单栏Assets->Create->Prefab,来创建一个新的预设体,如下图:我们命名为Rocket,那么子弹,飞船要发射,所以我们新建一个cs脚

2016-11-11 15:51:32 668

原创 Unity3D之太空大战一

这是一个简单的太空大战DEMO,整个游戏两个部分,开始游戏界面跟游戏主界面,敌人分为两种,一种是简单的敌人,只会去触碰主角,还有一种是复杂点的敌人,可以发射子弹,,OK,下面我们一步步来。首页我们导入相关的资源,在Assets里单击弹出选择框,选择Import Package->Custom Package,如下图:接下来,我们要创建一个开始游戏场景,点击菜

2016-11-11 15:49:36 1949

原创 unity3D游戏开发十八之NGUI动画

我们先来看下帧动画,顾名思义,就是一帧帧的图片组成的动画,我们需要用到UISprite Animation组件,它的属性如下:Framerate:播放速率,也就是每秒钟播放的帧数Name Prefix:图片名字的前缀,可以用来过滤图片集中的图片,从而指定你需要的图片Loop:循环按照前面文章创建UI的步骤,我们创建一个sprite,一个button,通过

2016-11-11 15:43:14 229

原创 unity3D游戏开发十七之NGUI四

接下来我们讲解下UIGrid,UIGrid是用来轻松的排列众多widget到固定大小格子的脚本。 编辑时和运行时都可以使用。如果想使用可变的格子单元大小,你可以使用UITable,属性如下图:Arrangement的值决定了子节点的摆放位置。Horizonta让子节点向右排列,Vertical向下排列。Max Per Line属性控制Horizontal排列时候的最大有多少

2016-11-11 15:41:12 265

原创 unity3D游戏开发十六之NGUI三

接下来我们看下ProgeressBar,进度条,它是UISlider和UIScrollBar的基类,属性如下图:Value:百分比Alpha:透明度Steps:步阀阈值Appearance:特性a.Foreground(前景图片)b.Background(背景图片)d.Direction(滑动方向)On Val

2016-11-11 15:39:26 220

原创 unity3D游戏开发十四之NGUI一

在Unity中,可以使用代码控制其自身所携带的GUI来实现图形界面的搭建。但是这些组件的搭建效率很低,而且已经无法满足现在市场对图形用户界面美感的要求,所以,引入了NGUI来增加所要开发的图形用户界面的美感。NGUI是一个功能强大的UI系统,其事件处理通常由开发人员编写C#脚本完成,并且是一个严格遵循KISS原则的Unity框架,该框架具有干净、简约的代码。现在NGUI的各个版本很多,我这

2016-11-11 15:36:22 387

原创 unity3D游戏开发十三之GUI

GUI在游戏的开发中占有重要的地位,游戏的GUI是否友好,使用是否方便,很大程度上决定了玩家的游戏体验。Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。在Unity中使用GUI来完成GUI的绘制工作,目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现,如果游戏有比较多的界面制作

2016-11-11 15:34:57 621

原创 unity3D游戏开发十二之疯狂的小球

下面我们通过一个具体的实例来了解如何使用物理引擎,该实例通过第三人称视角控制游戏中的小球对象,游戏通过是否与钻石碰撞来界定是否寻找到钻石并获得积分,获得积分满10分后,赢得游戏,当小球冲出跑道时,游戏失败,并提示是否重新开始游戏。依次打开文件夹Assets-》object,在object文件夹下找到Runway.fbx文件,拖进场景中,如下图:选择Runwa

2016-11-11 15:33:44 1263

原创 unity3D游戏开发十一之物理引擎

Unity内置了NVIDIA的Physx物理引擎,Physx是目前使用最为广泛的物理引擎,被很多游戏大作所采用,开发者可以通过物理引擎高效、逼真地模拟刚体碰撞、车辆驾驶、布料、重力等物理效果,使游戏画面更加真实而生动。Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重

2016-11-11 15:32:11 1737

原创 unity3D游戏开发十之粒子系统

Shuriken粒子系统是Unity3.5版本新推出的粒子系统,它采用模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种缤纷复杂的粒子效果。依次打开菜单栏中的GameObject->Greate Other->Particle System,在场景中新建一个粒子游戏对象,如下图:粒子系统的控制面板主要由Inspector视图中的Particle Sys

2016-11-11 15:31:18 1087

原创 unity3D游戏开发九之雾效、水效和音效

开启Fog(雾效)将会在场景中渲染出雾的效果,在Unity中,可以对雾的颜色、密度等属性进行调整。开启雾效通常用于优化性能,开启雾效后远处的物体被雾遮挡,此时便可选择不渲染距离摄像机较远的物体。这种性能优化方案需要配合摄像机对象的远裁切面设置来使用。通常先调整雾效得到正确的视觉效果,然后调小摄像机的远裁切面,使场景中的距离摄像机对象较远的游戏对象在雾效变淡前被裁切掉。在Unity中,开启雾

2016-11-11 15:30:16 1083

原创 unity3D游戏开发八之天空盒

Unity中的天空盒实际上是一种使用了特殊类型Shader的材质,该种类型材质可以笼罩在整个游戏场景之外,并根据材质中指定的纹理模拟出来类似远景,天空等的效果,使游戏场景看起来更完整。依次打开菜单栏Assets->Import Package->Skyboxes,如下图:为项目工程导入Skyboxes.UnityPackage,导入时会弹出Importing packa

2016-11-11 15:29:09 807

原创 unity3D游戏开发七之创建基本游戏场景四

这篇文章中我们简单介绍下角色控制,依次打开菜单栏中的Assets->Import Package->Character Controller,如下图:导入角色控制资源包,如下图:资源包被导入后,资源包中包含两个预设体,分别是第一人称角色控制预设体、第三人称角色控制预设体,预设体可以直接拖进项目工程中任何场景中直接使用,如下图:下面我们直接

2016-11-11 15:27:53 527

原创 unity3D游戏开发六之创建基本游戏场景三

这篇文章中,我们来详细介绍下Unity的地形编辑器,Unity拥有功能完善的地形编辑器,支持以笔刷绘制的方式实时雕刻出山脉、峡谷、平原、高地等地形。Unity的地形编辑器同时提供了实时绘制地表材质纹理、树木种植、大面积草地布置等功能。Unity中的地形编辑器支持LOD(Level of Detail)功能,能够根据摄像机与地形的距离以及地形起伏成都调整地形块网格的疏密程度。远处或平坦的地形使用稀疏

2016-11-11 15:26:49 667

原创 unity3D游戏开发五之创建基本游戏场景二

光源是每一个场景的重要组成部分,网格模型和材质纹理决定了场景的形状和质感,光源则决定了场景环境的明暗、色彩和氛围。每个场景中可以使用一个以上的光源,合理地使用光源可以创造完美的视觉效果。uniity提供了4种类型的光源1、Directional light:方向光源,类似于自然界中日光的照明效果2、Point light:点光源,类似灯泡的照明效果3、Spotlig

2016-11-11 15:25:43 533

原创 unity3D游戏开发四之创建基本游戏场景一

Unity创建游戏的理念可以被简单地理解为,一款完整的游戏就是一个Project(项目工程),游戏中不同的关卡/场景对应的是项目下面的Scene(场景)。一款游戏可以包含若干个关卡/场景,因此一个项目工程下面可以保存多个Scene。我们可以点击File菜单->New Project来创建一个新的工程,可以设置project的目录,然后可以选择需要导入的包,如下图:点Cr

2016-11-11 15:24:40 565

原创 unity3D游戏开发三之unity编辑器二

下面我们介绍下GameObject,游戏对象/物体,通过游戏对象我们可以创建游戏对象,如灯光、粒子、模型、GUI等。GameObject菜单通过Create Other,我们可以创建系统自带的一些游戏对象,具体如下:Particle System:创建粒子系统Camera:创建摄像机GUI Text:创建GUI文本GUI Texture:

2016-11-11 15:20:24 268

原创 unity3D游戏开发二之unity编辑器一

通过官网我们可以下载最新的unity版本,这里我们是基于Mac OS系统的,安装步骤很简单,这里就略过了。安装完成后,打开unity,主界面如下:下面我们来看看它的界面布局,Unity界面主要包括菜单栏、工具栏以及相关的视图等内容。1、Scene视图2、Game视图3、Hierarchy视图(显示的都是游戏对象)

2016-11-11 15:18:34 462

原创 unity3D游戏开发一之初识unity

刚开始看到unity的编辑界面,确实给了我很大的震撼,相对于cocos2dx来说,强大了太多,当然cocos2dx主要是面对2D游戏的开发,unity主要是面对3D游戏的开发,当然它的范围不仅仅是游戏。下面简单介绍下unityUnity是由Unity Technologies公司开发的跨平台专业游戏引擎,它打造了一个完美的游戏开发生态链,用户可以通过它轻松实现各种游戏创意很三维互动开发,创

2016-11-11 15:14:00 1100

原创 unity3D游戏开发十五之NGUI二

接下来我们讲解下UILabel,UILabel是用来显示文本的脚本,继承自UIWidget。我们创建一个label,属性如下图:所有的label都需要Font才可正常工作。这个字体可以使Dynamic的(引用Unity Font),也可以是Bitmap字体——嵌入到Atlas里面的字体。动态字体更稳固因为它不需要你预先创建符号,但是Bitmap字体可以和你atlas的其他东西渲

2016-11-11 15:07:17 212

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除