自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(330)
  • 资源 (1)
  • 收藏
  • 关注

原创 详解Unicode字符集以及字符编码实现(一)

(The Unicode Standard),其整理、编码了世界上大部分的文字系统,使得电脑能以通用划一的字符集来处理和显示文字,不但减轻在不同编码系统间切换和转换的困扰,更提供了一种跨平台的乱码问题解决方案。其实网站并没有骗你,只是没有弄清楚字符编码的问题,那么什么是字符编码,如何尽量避免这种情况出现,接下来本文将详细讨论所有的细节,并使用代码实现Unicode字符集在计算机中的显示。1854年,英国数学家乔治·布尔发表了一篇里程碑式的论文,其中详细介绍了一种代数化的逻辑系统,后人称之为布尔代数。

2023-02-21 13:48:45 1558

原创 Lifecycle, LifecycleOwner, LifecycleObserver类讲解

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

2018-10-25 12:45:32 12039 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 695

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

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

2018-10-20 18:48:59 646

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

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

2018-10-20 13:45:02 1200

原创 自定义配置变化

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

2018-10-19 13:13:48 309

原创 资源文件夹res/概述

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

2018-10-19 11:17:59 4112

原创 安卓四大组件介绍

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

2018-10-18 20:33:32 783

原创 建立我的第一个程序

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

2018-10-18 11:14:41 276

原创 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 1083

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

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

2018-01-26 22:19:56 1326

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

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

2018-01-26 18:16:01 440

原创 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 7329 2

原创 Ubuntu下libxml2的安装和使用

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

2018-01-26 16:28:31 15039

原创 学习使用CMake构建工程

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

2018-01-26 14:41:56 1061

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

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

2018-01-25 22:32:36 1691

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

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

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

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

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

2018-01-24 22:29:53 1435

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

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

2018-01-24 21:51:34 1718

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

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

2018-01-24 20:46:03 834

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

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

2018-01-24 16:43:48 2724

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

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

2018-01-24 10:41:43 2701 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 770

原创 二分法(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 775

原创 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 1315

原创 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 540

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

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

2017-12-05 14:22:04 917

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

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

2017-11-27 19:55:37 1683

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

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

2017-11-27 18:10:02 1586

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

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

2017-11-27 16:33:38 2222

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

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

2017-11-24 12:52:55 1280

原创 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 2151

原创 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 1963 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 953

原创 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 2218

翻译 零基础学图形学(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 711

原创 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 753

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

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

2017-11-14 11:46:53 1381

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

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

2017-11-14 11:44:15 3208 1

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

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

2017-11-14 10:19:35 815

空空如也

空空如也

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

TA关注的人

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