自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 关于Android四大组件最权威最深刻最准确的解读

这篇文章翻译自Dianne Hackborn发表在google+上的一篇post,她是google资深大牛,2005年就进入Android Framework团队。即使在google内部,论起对Android系统的理解把握,鲜有出其右者。在文章中,她深刻地阐明了Android设计四大组件的初衷,各个组件的目的作用,适用情景。我相信,读完此文,你会觉得重新认识了Android。如果想阅读原文,请在g

2016-08-11 12:40:54 4529 4

原创 音视频基础知识

什么是音频什么是视频编解码一.声音1.1.声音是由物体振动而产生的波1.2.声音的三要素:频率,振幅,波形a.频率代表音阶的高低b.振幅代表响度c.波形代表音色1.3.声音的采集,保存,和播放时如何实现的?场景:打开手机自带的录音软件,通过手机麦克风说话,就可以将说话内容保存在存储卡中,点击后手机会播放刚刚说的话,这一过程是如何实现的呢?1.4.数字音频a.采样:在时间...

2020-04-04 20:28:12 431

原创 Flutter报错:No Material widget found Switch widgets require a Material widget ancestor

在Flutter开发中,如果出现如下报错信息No Material widget found Switch widgets require a Material widget ancestor一.问题原因分析:1.首先你应该使用了material风格的控件,如Textfield,Switch等;2.使用这些控件的时候在build方法中根Widget没有使用Scaffold作为根控件二 ...

2019-03-23 22:36:15 5774 1

原创 Activity启动模式

Back Stack(回退栈) 包含多个Task任务栈–> Task任务栈是Activity的集合Standard: 标准模式,系统模式模式 每次启动一个Activity都会创建一个新的实例,不管这个实例是否已经存在. 新的实例运行在创建他的activity所在的栈中. 注意:使用Application去启动startard模式的activity时会报错,因为非Actvity类...

2018-08-09 14:25:54 263

原创 Android源码解析:Activity的onCreate()方法是如何被调用的

带着问题看源码上一篇文章我们分析了一个应用程序启动会调用ActivityThread的main方法,并最后创建Application对象执行其onCreate()方法,那我们所熟悉的Activity的onCreate()方法又是如何被调用的,带着这个问题,我们去到源码中寻找答案.1.当我们在Launcher界面点击应用图标时,会调用桌面程序的点击事件方法 在线查看源码...

2018-08-09 11:29:06 1836

原创 Android源码解析:Application的onCreate()方法是如何被调用的

1.一个程序的入口是main方法,而当我们接触安卓的时候都是Activity的各种生命周期方法,那main在哪里调用呢?就是ActivityThread中,该类也代表应用程序的主进程.ActivityThread -> main() public static void main(String[] args) { //... 1.开启Looper ...

2018-07-31 11:17:21 4571

原创 Failed to resolve: runtime

bug处理记录:bug日志: Failed to resolve: runtime,还有其他的: Failed to resolve等等, 原因:project.gradle依赖出现问题, 解决:调整依赖库的排序 eg:我的项目中处理方式buildscript { repositories { maven { url “https://maven.goog...

2018-06-13 15:00:45 2717

原创 ReactNative项目实战03(界面跳转与传值).md

引言:上篇文章我们实现了rn的一个界面,现在我们来创建多个界面,并实现界面之间的跳转先看最终实现效果创建多个界面,并使用Navigator第三方框架实现跳转1.我们先创建一个MainPage.js界面import React, {Component} from 'react';import { Text, View,} from 'react...

2018-06-05 12:01:06 649

原创 ReactNative项目实战02(实现项目的第一个界面).md

引言:大部分项目第一次进入都是登陆界面:现在我们就来实现一个登陆功能的界面最终实现效果功能实现使用WebStrom打开RN项目,打开App.js文件 1. 由于我们需要使用到图片展示,输入框和按钮,所以需要先引入这些控件import React, { Component } from 'react';import { Platform, StyleS...

2018-06-04 11:37:42 453

原创 ReactNative项目实战01(环境搭建).md

Windows+Android版本rn中文网介绍: https://reactnative.cn/docs/0.51/getting-started.html 1. 安装Python2和NodeJS,自己到官网下载安装,按照流程来(没啥好说的) 1.1 Python2安装,选择2.7.15版本下载:https://www.python.org/downloads/ ...

2018-05-31 21:14:44 657

原创 ReactNative报错处理:Define location with sdk.dir in the local.properties file or with an ANDROID_HOME en

cmd错误日志...\RNPracticePro>react-native run-androidScanning 580 folders for symlinks in D:\Project\ReactNative\RNPracticePro\node_modules (54ms)JS server already running.Building and installing the ap

2018-03-10 18:21:24 602

原创 TDialog: DialogFragment封装,高效实现各种弹窗效果.md

前言 文章代码示例已放到Github上了,有需要的朋友可以去看下TDialog,欢迎star和fork,项目会一直维护,有疑问可以提Issues或留言.文章目录TDialog框架的由来框架使用解析框架原理解析正文开始前先来一波效果图一.TDialog的由来所有框架的由来都是为了更方便,更高效的解决问题,TDialog也一样,是为了在项目中更高效的实

2018-01-06 11:11:03 1832 1

原创 Android API解析Paint&Canvas

技术点        Xfermode    Shadle    绘制文字-基准线问题    MaskFilter 滤镜效果画笔 Paint        Paint的基本使用:// 重置Paint。void reset();void set(Paint src);void setCompatibilityScaling(floa

2017-05-25 15:57:34 917

原创 ReactNative下载第三方库出错解决Error: EPERM: operation not permitted, rename

错误日志E:\Project\ReactNative\RNPracticePro>npm install React-native-tab-navigator --savenpm ERR! Windows_NT 10.0.14393npm ERR! argv "D:\\Develop-Tools\\nodejs\\node.exe" "D:\\Develop-Tools\\node

2017-04-10 11:08:32 20946 5

原创 图解Android事件分发流程

2017-03-10 14:14:06 672

原创 从源码分析View绘制流程

先看一张view绘制流程的时序图Activity加载显示基本流程研究入口:Activity.setContentView(layoutId);    public void setContentView(@LayoutRes int layoutResID) {        getWindow().setContentView(layoutResI

2017-02-17 11:32:15 614

转载 图解 Android 事件分发机制

在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机

2017-02-15 16:04:20 455

原创 Toolbar使用之踩过的坑

toolbar是v7包中的类安卓5.0推出,自2014年谷歌io大会上的md风格的设计toolbar作用:代替ActionBar使用,继承自viewgroup要使用toolbar,需要设置主题为AppCompat,并且主题设置里面不要actionbarstyle name="ToolbarTheme.Base" parent="Theme.AppCompat">    

2017-01-18 09:10:15 1442

原创 TextInputLayout源码解析

文章目录效果图TextInputLayout的使用源码解析TextInputLayout继承自LinearLayout,配合EditText使用,可以实现MD风格效果使用前添加依赖 compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:desi

2016-12-30 18:36:04 1148

原创 .9图片处理报错Error: java.lang.RuntimeException: Crunching Cruncher ic_coupon2.9.png failed, see logs

在使用制作好的.9图片后,Android Studio报错:Error:Execution failed for task ':app:mergeDebugResources'.> Error: java.lang.RuntimeException: Crunching Cruncher ic_coupon2.9.png failed, see logs查看xml文件中的展示一切都正常,问

2016-12-09 12:37:55 5086

原创 .9图片制作

在使用图片作为背景的时候,需要保证图片在不同手机屏幕上的展示不失真,这个时候需要将png图片制作成.9图片sdk目录下->tools->draw9patch.bat->打开需要遍历的图片设置需要拉伸的部分展示效果

2016-12-09 11:42:24 1410

原创 RecyclerView实用-打造自动循环的RecyclView

先看效果图主要处理的地方:RecyclerView中Adapter的item个人可以无限轮询.RecyclerView自动滑动手指按下时滑动停止,手指抬起后继续自动滑动public class AutoPollRecyclerView extends RecyclerView { private static final long TIME_AUTO_POLL =

2016-12-05 16:50:14 5923 1

转载 JAVA的静态变量、静态方法、静态类

静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明。(1)Java静态对象和非静态对象有什么区别?      比对如下:                                         静态对象                                                        非静态对象     拥有属性:  

2016-11-29 17:09:57 337

原创 分治算法-球队循环赛日程安排-java实现

/** * 分治法-球队循环赛事日程安排,球队数量最好是2的n次方,不然日程安排会出现空隙 * 采用分治法进行处理,将日程安排分成四个象限来处理 */public class RoundMatch { public void roundMatch(int[][] table, int n) { if (n == 1) { table[0][0] = 1; return; } int

2016-11-27 11:11:50 4436

原创 贪心算法-背包算法-java实现

/** * 贪心算法-背包算法: */public class Backpack { // 现有一个背包容量150kg // 有一个宝藏里面有很多物品,物品的重量和价值分别为: // 25kg--20 // 30kg--40 // 60kg--45 // 35kg--50 // 20kg--10 // 50ke--45 // 40ke--50 private int[] weights = new

2016-11-26 14:35:20 5485

原创 穷举法-柏松分酒

/** * 穷举法:泊松分酒 * * @author timmy1 * */public class ShareWine { private int cup1 = 12;// 第一个杯子的容量 private int cup2 = 8;// 第二个杯子容量 private int cup3 = 5;// 第三个杯子容量 private int result = 6;// 目标酒量 // 假设有三

2016-11-24 13:00:37 1076

原创 递归算法-汉诺塔-java实现

/** * 递归算法-汉诺塔 * @author admin * */public class Hanota { /** * 汉诺塔:一共三根柱子,要求从第一根柱子将所有的盘子移动到第三根柱子上,移动过程中小盘子在上,大盘在下 * @param n 盘子个数 * @param from 第一根柱子 * @param mid 中间柱子 * @param to 第三根柱子 */ priv

2016-11-24 12:58:36 1018

原创 递归算法-求n的阶乘,超能生兔子-java实现

/** * 递归算法 * @author timmy1 * */public class Recursion { /** * 求n的阶乘 * @param n */ public int factorial(int n){ if(n == 1){ return 1; }else{ return n*factorial(n-1); } } /** * 超能生兔子 * @pa

2016-11-24 12:57:56 1779

原创 递归算法-求最大公约数-java实现

/** * 递归算法:求最大公约数,根据欧几里德知道-》m和n(m > n)的最大公约数 = n 和m%n的最大公约数 * * @author timmy1 * */public class GreatestCommonDivisor { public int getGCD(int m, int n) { if (n == 0) { return m; } else { return

2016-11-24 12:57:15 7665

原创 基数排序-java实现

/** * 基数排序 * * @author timmy1 * */public class RadixSort { /** * 实现思路:根据传入的位数进行循环: 第一遍:先循环数组中元素个位数上的数字,先根据个位数进行排序,使用二维数组进行数据存放 * 第二遍:进行元素十位数上的数字排序 * * @param array * 数组 * @param rad

2016-11-24 10:22:44 512

原创 快速排序-java实现

/** * 快速排序: 定义数组的第一个元素为基准元素,进行所有元素的比较,比较一趟的情况是比基准数小的在左边,比基准数大的在右边.重复比较 * 不稳定排序 */public class QuickSort { public void quickSort(int[] array, int left, int right) { if (left >= right) return; int b

2016-11-24 10:20:02 426

原创 归并排序-java实现

/** * 归并排序:采用分治法 * * @author timmy1 归并排序是将一个无序的元素序列,先进行分解成只有一个数据元素的序列. 再将两个相邻的元素序列进行合并,合并后还要是有序的. */public class MergeSort { /** * 将数组进行分解,分解成只有一个元素,热后合并 * * @param a * @param left * @param rig

2016-11-24 10:17:25 333

原创 堆排序-java实现

/** * 堆排序:大堆排序 1:建立大堆排序->根据公式 父节点为 i 左节点为2*i+1;右节点为:2*i+2; * 我们要进行大堆排序需要根据数组元素个数找到最后节点的父节点,从这个父节点往上进行大堆排序,要求父节点的数据比左右子节点都要大 * 2.获取到第0个元素(最大的数据),拿着这个最大的元素和数组最后的元素进行交换,然后又进行大堆排序 * */public class HeapSo

2016-11-24 10:15:52 567

原创 希尔排序-java实现

/** * 不稳定排序 * 希尔排序:设置增量为数组长度的一半,每次迭代减少为上一次的一半,找到选出的几个元素进行选择排序 * 直到增量为1退出循环 */public class ShellSort { private void shellSort(int[] a) { int d = a.length; while(true){ d /= 2; for(int i = 0;i+da.

2016-11-24 10:14:08 334

原创 插入排序(包括二分法插入排序)-java实现

/** * 插入排序:稳定的排序算法 * * @author timmy1 */public class InsertSort { /** * 直接插入排序:将元素插入到数组前面排好序的元素列 * * @param array */ public void insertSort(int[] array) { for (int i = 1; i array.length; i++)

2016-11-24 10:13:06 510

原创 选择排序-java实现

/** * 选择排序 选择排序的思路是:是从第一个元素和后面的元素进行比较,获取到最小的元素,进行比较交换 * 不稳定排序 */public class SelectSort { public void selectSort(int[] array) { for (int i = 0; i array.length; i++) { int temp = array[i]; for (i

2016-11-24 10:09:39 351

原创 冒泡排序-java实现

/** * 冒泡排序:相邻元素两两比较,每趟都将最大元素调整到最后面 * 稳定的排序算法 */public class BubbleSort { public void bubbleSort(int[] a) { for (int i = a.length-1; i > 0; i--) { for (int j = 0; j i; j++) { if (a[j] > a[j + 1]

2016-11-24 10:06:10 347

原创 拓扑排序-java实现

/** * 拓扑排序:处理对象是有向图,使用的存储结构为邻接表-》每次运行的是入度为0的顶点-》使用栈进行存储 * * @author timmy1 * */public class TopologicalSort { // 邻接表的邻接节点 class AdjoinNode { int in; String data; EdgeNode firstEdge;// 第一个边节点 publ

2016-11-24 09:51:47 678

原创 最短路径实现-迪杰斯特拉算法-java实现

/** * 最短路径算法:迪杰斯特拉(Dijkstra)算法 * * @author timmy1 * */public class ShortestPath { int[][] matrix;// 矩阵 int MAX_VALUE = 65535; int size; /** * 迪杰斯特拉算法求最短路径:和普里姆算法思路差不多,默认初始化为第一行的顶点权值数组-》找打最短权值的顶点-》然后

2016-11-24 09:49:11 2394

原创 最小生成树-普里姆算法-java实现

最小生成树:是将图中的顶点全部连通,但是其权值之和要求最小/** * 最小生成树:两种方式,普里姆算法和克鲁斯卡尔算法 * @author timmy1 * */public class MinSpanTree { int[][] matrix;// 矩阵 int MAX_WEIGHT = Integer.MAX_VALUE; int size;// 顶点个数 /** * 普里姆算

2016-11-24 09:45:19 3088

空空如也

空空如也

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

TA关注的人

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