自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(329)
  • 资源 (1)

原创 Lifecycle, LifecycleOwner, LifecycleObserver类讲解

最近谷歌安卓团队推出一堆的组件开发架构,方便程序开发者编写更健壮,更安全,更简洁的代码,但是想要熟练地应用它们还是需要学习框架的原理。Lifecycles的目的就是安卓组件(activities, fragments)在发生状态变化(onStart, onResume)的时候,其它的部分能够相应组件的变化。一个很常见的例子就是位置传感器要把位置实时传递到UI界面上,那么需要在activitie...

2018-10-25 12:45:32 3573 1

原创 字符串的字体和显示 (3)

安卓有三种字符串,String, String Array, Quantity String(Plurals).String和String Array容易理解,一个是字符串,一个是字符串数组。通过String[] planets = res.getStringArray(R.array.planets_array);就可以在代码中获得字符串数组。第三种是一个特例,为什么叫Qu...

2018-10-21 15:36:43 254

原创 Drawable资源类型详述 (2)

Drawable资源是一个很泛的概念,它是指可以被画到屏幕上的,可以通过getDrawable()获取,或者通过android:drawable引用到其它xml文件的资源,资源的类型有很多种:Bitmap File: 一般是以.png, .jpg, .gif结尾的,可以创建一个BitmapDrawable对象。Nine-Patch File: 是一个可以根据内容进行扩充的PNG资源,创建一...

2018-10-20 18:48:59 261

原创 动画 (Animation) 资源类型详述 (1)

详细介绍程序资源的使用,格式和语法,包括①Animation Resources动画资源,Tween动画(Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的过程)保存在res/anim资源文件中,Frame动画保存在res/drawable资源文件中。②颜色状态资源定义在res/color/文件夹中。③Drawable资源定义在res/drawable/文件夹中...

2018-10-20 13:45:02 456

原创 自定义配置变化

大家都知道手机旋转屏幕的时候activity会重启,安卓提供两种方式来处理配置变化。1.保留一个配置对象一般是使用onSaveInstanceState()的Bundle对象进行数据传递,还可以使用ViewModel对象,后面再作分析。2.自定义配置变化如果你的程序在特殊的配置变化时不需要更新资源,你可以自己处理配置变化,防止系统重启你的activity,虽然系统并不推荐这么做。...

2018-10-19 13:13:48 124

原创 资源文件夹res/概述

安卓的资源文件通常有bitmaps, layout布局,字符串,动画指令等,它们是和代码分开的,所以你可以独立地管理它们。你需要通过命名不同的文件夹,为不同的设备提供可选的资源,那么系统就会在程序运行的时候选择合适的资源。比如,你想根据屏幕的尺寸提供不同的UI布局,你通过系统生成的R类中包含的资源ID的方式访问它们。1.res/支持的文件夹类型文件夹 描述 animator/ ...

2018-10-19 11:17:59 1470

原创 安卓四大组件介绍

安卓四大组件Activities, Services, Broadcast receivers, Content providers是程序的核心模块。源码在appfundamentals 目录里面。1.ActivitiesActivities代表和用户交互的一个界面,比如一个邮箱程序会有一个展示列表的activity,会有一个建立新邮件的activity,还有一个读邮件的activit...

2018-10-18 20:33:32 384

原创 建立我的第一个程序

教你建立一个简单的程序,你会创建一个用户界面,接收用户的输入,然后显示在第二个界面上。源码在appfundamentals 目录里面。1.概述在开始写代码之前,你应该有下面的基础认识,程序是由多个部件组合而成的,activities是负责提供用户界面的部件,其它的部件还有broadcast receivers, services, 允许你在后台运行任务。程序需要适应不同的设备,你需...

2018-10-18 11:14:41 136

原创 Android源码分析--手机默认音量值的设置(08)

手机在reset的时候,会设置相关的默认音量,这个默认音量怎么在开机的时候修改呢?可以看到在/frameworks/base/media/java/android/media/AudioSystem.java public static int getDefaultStreamVolume(int streamType) { return DEFAULT_ST

2018-01-29 14:10:45 719

原创 libxml2生成和解析配置树文件

之前的章节中介绍如何安装Ubuntu下libxml2的安装和使用以及如何使用CMake建立工程 CMake加入第三方库,这章将会更深入一步,讲述如何创建一个xml文件Create A Tree,如何解析xml文件,这两个例子来自于官网的示例,同时结合Android实际的例子,介绍解析一个设备树的配置文件。新建工程CreateTree/** * section: Tree *

2018-01-26 22:19:56 968

原创 C++标准库容器和迭代器讲解

从写程序开始就已经接触了类似栈,队列等数据结构,很多的书上也讲述到容器,但是之前的书上很多地方容器和迭代器是分开的,或者说他们是用比较老的C++标准在写代码,这并不符合现在工程创建。写这篇文章的参考主要是Professional C++ 3rd这本书,可以在网盘上进行下载https://pan.baidu.com/s/1pMVnJ7P这章主要是序言,主要包括下面几章Sequential

2018-01-26 18:16:01 288

原创 CMake加入第三方库

CMake构建工程的时候很多程序可以使用写好的库,这就会涉及到库的编译链接过程。这里使用的提到的 Ubuntu下libxml2的安装和使用xml库作为讲解示例,如何安转运行请点击链接。使用kdevelop新建工程名字XmlDemo,CMakeLists.txt文件cmake_minimum_required(VERSION 3.7)project(hello)add_e

2018-01-26 16:52:17 5520 1

原创 Ubuntu下libxml2的安装和使用

这篇文章主要介绍libxml2的安装和使用,xml文件的主要作用就是配置文件,实际的应用在前面的章节Audio设备文件解析中有需要对audio_policy_configuration.xml文件解析,google使用的是开源库libxml2,在源码目录/external/libxml2下面,现在就单独对这个库进行分析。在终端中执行wang@wang:~/test$ sudo apt-

2018-01-26 16:28:31 6531

原创 学习使用CMake构建工程

CMake是编写C/C++常用的文件构建工具,掌握它的编写规则对于理解工程至关重要。本文只是简单的cmake入门,更多详细的内容可以参考网上的资料。这里使用的kdevelop作为开发工具,读者也可以选用vim或者visual studio都可以。具体的kdevelop可以参考此文kdevelop安装使用运行。创建Hello工程,工程中包含两个文件main.cpp#include

2018-01-26 14:41:56 799

原创 Android源码分析--Audio设备文件解析(07)

上篇文章中只是讲到配置文件在哪里,怎么读取文件,但是真正的文件解析还没有开始。这篇就开始分析文件解析,认识这些解析的参数。 接着上篇Audio设备文件加载继续进行分析,知道主要是这个函数起到解析的作用。static status_t deserializeAudioPolicyXmlConfig(AudioPolicyConfig &config) { char audioPo

2018-01-25 22:32:36 1032

原创 Android源码分析--Audio设备文件加载(06)

手机上有多少设备都是通过配置xml文件来实现的,然后在构造AudioPolicyManager实例时进行文件解析,初始化相关的变量。比如有些手机有两个麦克风,通常叫做内置麦克风,和副麦克风,但是有些低端手机只会配置内置的麦克风。        通过全局搜索可以看到/device/google/dragon/device.mk:USE_XML_AUDIO_POLICY_CONF := 1

2018-01-25 21:20:36 1660 1

原创 Android源码分析--AudioPolicyManagerObserver类讲解(05)

为什么要单独写个文章讲到这个类,因为这个类在之前我们获取可用的输入输出设备的时候AudioPolicyEngine设备路由调用过其中的方法,但是没有深入分析,而且这个类是AudioPolicyManager的接口,同时这个类可以引申出其它的Audio抽象类,最后要讲解Vector和Collection容器的使用,所以说要写的内容仍然很多。/frameworks/av/services/audi

2018-01-24 22:29:53 566

原创 Android源码分析--AudioEngine的初始化(04)

前面的文章中讲到Engine设备的选择,那么这个类是怎么被初始化的呢?可以看到在AudioPolicyManager的构造器中,AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientInterface){ // Once policy config has been parsed, retri

2018-01-24 21:51:34 1011

原创 Android源码分析--Audio声音相关问题分析(03)

范例1:客户需要开发一个对讲机,用得是手机的板子,因为对讲机不需要那么多的功能,所以需要对底层硬件进行裁剪,使用听筒作为音频输出,其它所有的音频设备都去掉,因此如果不修改Framework层的音频逻辑的话,会出现对讲机无声的问题。范例2:客户开发一款智能手表,定制的功能是不允许设备进行录音,就是即使安转设备录音程序也没有办法运行。范例3:

2018-01-24 20:46:03 417

原创 Android源码分析--AudioPolicyEngine设备路由(02)

这篇中记住一个中心思想就是,流(Stream)决定策略(Strategy),策略决定设备(Device)。流在App层可以经常碰到,比如Music流,Notification流,Call流。为什么叫作策略,大概是因为中文翻译过来不大准确,最好的方式就是直接用Strategy表示。先来看看流是什么,在下面的文件中定义/system/media/audio/include/system/aud

2018-01-24 16:43:48 1155

原创 Android源码分析--AudioPolicyEngine设备路由(01)

手机里有很多设备,比如外放,听筒,耳机,蓝牙,还可以分很多很细的设备,比如内置麦克风,耳机麦克风。在写程序的时候上层很少去管理这么多复杂的设备,Android都是通过底层AudioPolicyEngine进行自动切换控制的。比如插入耳机的时候,上层可能会收到广播,提醒耳机已经插入,但是程序并不需要将声音切换到耳机,在AudioPolicyEngine里面实现这样的功能切换。  要介绍这个比较大

2018-01-24 10:41:43 1359 1

原创 几种排序方法比较

第一种就是selection sort排序,如果是升序的话就是从剩下的元素中选择最小的元素放到元素的最前面。代码实现// 1. Find the smallest element in the range between left hand and the// end of the vector, and point at that element with your right han

2017-12-14 09:55:17 371

原创 二分法(Binary Search)介绍

二分法,是常用的方法,下面这里有个实例,讲述如何使用二分法写代码。// Implementation of binary search#include #include #include "vector.h"using namespace std;void initCityNames(Vector & cities);int findInSortedVector(string k

2017-12-13 10:34:34 437

原创 Unreal教学(13)——创建界面(Creating Screen UI Elements)

GUI的重要性。这章中我们建立player的健康值, stamina, and ammo.展示很多其它的东西。使用的编辑工具叫做Unreal Motion Graphics UI Designer (UMG).主要讲述内容:1. 使用UMG创建UI元素2. 使用蓝图修改创建的UI元素。HUD (short for Heads-up Display) 首先进入蓝图定义

2017-12-07 15:40:09 747

原创 Unreal教学(12)——增加玩家的能力(Enhancing Player Abilities)

这篇文章中我们将修改First Person Shooter模板,让它看起来更加的复杂。我们将深入了解蓝图。将要讲述下面这些内容Player inputs and controlsField of viewTimelines and branching logicAdding sounds and particle effects to an object interactio

2017-12-05 19:28:14 317

原创 Unreal教学(11)——物体交互(Object Interaction with Blueprints)

新建一个First Person的模板工程,点击play完成之后,可以进入到射击的场景中,通过按住鼠标左键,前后移动鼠标的话,相机会前后移动。按住鼠标右键,前后拖动鼠标的话,相机会旋转。按住鼠标的中间键或者左右键同时按,前后移动,相机则会上下移动。按住左键或者右键相机会左右旋转,按住中间的键相机会左右移动。以上就是Level Editor中的viewport

2017-12-05 14:22:04 484

翻译 Unreal教学(10)——放置Actor (Placing Actors)

一个Actor可以是放在场景中的任何物体。Actor是泛型的类,它支持3D变换,比如平移,旋转和缩放。Actor可以通过游戏代码或者蓝图进行创建或者销毁。在C++中,AActor是所有Actor的基类。这里有几种不同类型的Actors,biru , StaticMeshActor, CameraActor, PlayerStartActor.不管你在场景中使用什么类型的Actor,比如一个

2017-11-27 19:55:37 460

原创 Unreal教学(9)——虚幻引擎名词解释(Unreal Engine 4 Terminology)

前面的例子中已经基本上介绍了虚幻引擎怎么写代码,怎么画蓝图,并且实现了几个简单的例子,比如移动一个Actor,用户的输入输出时间,通过鼠标按键等操作控制物体。也进行了粒子系统的简介,还有其它的变量之类的其它的东西。写到现在还有一些名词我们是比较模糊的,那么现在就简要地总结一些这些名词。比如,你会问问题,什么是Actor,什么是Component, 什么是Pawn,现在我也是比较困惑。这篇文章会

2017-11-27 18:10:02 623

原创 Unreal教学(8)——蓝图学习快速开始(Blueprints Quick Start Guide)

之前几个篇章中主要讲到如何使用C++的代码实现相关游戏的相关功能,我们已经学习到了Actor是什么东西,经常会使用Empty Actor这个东西,那么它到底是什么,我们可以这样假设Actor是我们定义一个物体,这个物体但是现在看不到,也摸不着,但是有些整体的属性,相当于于一个人的灵魂吗,有灵魂之后才能有物体,有感知,有行动,已经对外界做出相关的反应,不知道这个比喻恰不恰当。^_^这篇中我们

2017-11-27 16:33:38 1718

翻译 零基础学图形学(14) 蒙特卡罗数学方法——快速介绍

关键字: Monte Carlo方法, Monte Carlo 整合, 随机变量, 概率,统计,期望值,variance(方差),标准差(standard deviation), 概率分布,概率密度模型(probability density function), 累积分布函数(cumulative distribution function), 转置采样,估值。原始的我们并不想这个教程太长,

2017-11-24 12:52:55 621

原创 Unreal教学(7)——控制玩家相机(Player-Controlled Cameras)

下面这个设置好像只有一个有作用,无法同时控制两个物体。 //Take control of the default Player AutoPossessPlayer = EAutoReceiveInput::Player0;这个程序是让物体附加一个相机,应该移动和视图都是针对物体的,和之前的Game-Controlled Cameras还是有区别的,Game-Controll

2017-11-22 16:16:27 1096

原创 Unreal教学(6)——玩家输入和Pawn(Player Input and Pawns)

Pawn这个单词不会翻译,找不到可以形象描述这个单词的汉语,大概的意思就是可以通过很多的Components合成一个含有多种属性状态的物体。这里主要是如果获取键盘和鼠标的输入,在Edit  -- Project Setting -- Engine -- Input里面控制,有两种属性,一种是Action Mappings,另外一种是Axis Mapping.这两种是有区别的,Actio

2017-11-22 14:24:30 1091 1

原创 Unreal教学(5)——变量,时间,事件(Variables, Timers, and Events)

设置一个倒计时计数器,可以给Editor提供接口,也可以给蓝图提供接口,这里不讲蓝图,讲如何写代码。两个关键的文件。Countdown.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#inclu

2017-11-21 19:11:45 515

原创 Unreal教学(4)——组件和碰撞(Components and Collision)

这个算是第一个比较深入到Unreal引擎编码的例子,这个例子中,可以通过A,S,D,W控制球体的移动,通过鼠标控制转向,有燃烧的火球,非常的逼真。下面是运行的示例图,跑动的时候效果会更赞,可以看到燃烧的火球:先贴上四个文件的代码,然后再来分析。CollidingPawn.h// Fill out your copyright notice in the Description

2017-11-21 14:38:40 1450

翻译 零基础学图形学(14) 几何知识——Geometry源码

//[header]// This program illustrates how the concept of vector and matrix can be implemented// in C++. This is a light version of the implementation. It contains the most// essential methods to ma

2017-11-18 09:13:16 433

原创 Opengl SuperBible 7th摘抄

OpenGL SuperBible学习第五章Data1. void glCreateBuffers(GLsizei n, GLuint* buffers);buffers is the address of the variable or variables that will be used to store the names of the buffer objects.

2017-11-14 22:46:13 515

原创 Unreal教学(3)——游戏相机控制(Game-Controlled Cameras)

可以设置两台相机在代码中进行切换达到变换视图的效果。

2017-11-14 11:46:53 775

翻译 零基础学图形学(13) 几何知识——法向量变换

(1)什么是法向量我们在第一篇的时候简单地提到了什么是法向量。一个表面P点的法向量是一个垂直该P点平面的向量。我们进入到几何基础之后会学习到更多的关于法向量的计算。现在假设我们知道tangent T和bi-tangent B,那么我们可以用下面的公司进行计算P点的法向量。N = T x B记住我们所说的叉乘操作,它是反结合率的,也就是说交换两个参数的位置会得到相反的结果。换句话说T

2017-11-14 11:44:15 1397

原创 Unreal教学(2)——快速开发程序(Programming Quick Start)

创建一个C++ 类,命名为FloatActor,该类的父类Actor就会在源码中自动生成

2017-11-14 10:19:35 481

原创 Unreal教学(1)——序言

抽空在学Unreal引擎,以便更好地掌握图形图像的基础。这些文章主要来自于Unreal的官网,以实际的例子为主,不会说明太详细的步骤,主要讲解代码。有兴趣的可以参考官网https://www.unrealengine.com/en-US/blog已经完成的知识有Unreal引擎源码下载,编译,使用VStudio进行代码编辑。Development SetupProgra

2017-11-14 10:05:40 544

c primer plus 6 edition

英文版的c基础教材 My goal is for this book to serve as a friendly, easy-to-use, self-study guide. To accomplish that objective, C Primer Plus employs the following strategies: ■ Programming concepts are explained, along with details of the C language; the book does not assume that you are a professional programmer. ■ Many short, easily typed examples illustrate just one or two concepts at a time, because learning by doing is one of the most effective ways to master new information. ■ Figures and illustrations clarify concepts that are difficult to grasp in words alone. ■ Highlight boxes summarize the main features of C for easy reference and review. ■ Review questions and programming exercises at the end of each chapter allow you to test and improve your understanding of C.

2015-01-15

空空如也

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