- 博客(51)
- 资源 (2)
- 收藏
- 关注
原创 ACE Tools环境配置指导
ACE Tools是一套为ArkUI-X应用开发者提供的命令行工具,支持在Windows/Ubuntu/macOS平台运行,用于构建OpenHarmony、HarmonyOS、Android和iOS平台的应用程序, 其功能包括开发环境检查,新建项目,编译打包,安装调试等。
2023-12-20 16:42:06
1786
原创 Java递归删除目录及目录下的文件
我们知道File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: /** * 递归删除目录下的所有文件及子目录下的所有文件 * * @param file 将要删除的文件目录 * @return 如果所有文件都删除成功则返回true, 有一个文件删除失败就停止删除并返
2017-03-20 10:08:06
3268
1
原创 Android实现解压压缩文件
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.Enumeration;imp
2017-03-15 15:52:11
2007
1
原创 Android复制res/raw目录的文件到SD卡下
前言 在应用开发中,我们会经常遇到操作工程中assets和res/raw目录下的文件,那么这两个目录有什么用呢?assets和res/raw工程目录下都可以存放一些小于1M(2.3版本以前要求,否则将不能读出数据。),这些文件将被打包到APK中供应用使用。assets目录下的文件将不做任何处理被打包,而res/raw目录下的文件,有些文档说会编译为二进制,有些文档说不会。有一个原则
2017-03-12 19:47:33
10201
3
原创 Android复制asset目录的文件到SD卡下
package com.mufeng.toolproject.utils;import android.content.Context;import android.content.res.AssetManager;import android.text.TextUtils;import java.io.File;import java.io.FileNotFoundExceptio
2017-03-12 18:06:21
4655
3
原创 Android外部存储/内部存储路径获取大全
package com.mufeng.toolproject.utils;import android.content.Context;import android.os.Environment;/** * Created by mufeng on 2017/3/11. */public class DirectoryUtils { private static final
2017-03-11 23:38:38
6204
2
原创 Android通过SystemProperties获取build.prop中配置的信息
前言 我们知道system.prop文件中存储着系统运行的很多配置信息(具体特定平台或产品的修改信息),system.prop文件中的内容最终会被编译到build.prop文件中,当程序运行时需要某种系统状态时,会到build.prop中进行读取。Android中提供了一个android.os.SystemProperties类来负责读取其中的内容,并且提供了几个Static的方
2017-03-03 17:37:05
6468
3
原创 Android build.prop参数详解
前言 build.prop是Android系统中的一个重要的属性文件,它记录了Android系统运行的很多配置信息,当程序运行时需要某种系统状态时,会到该模块中进行读取,类似Window中的注册表对少量配置信息进行存储,改变它能够取得一些意想不到的效果,但是也正是因为.prop的重要性,如果不明白具体的含义的话,绝对不要随便动它。build.prop参数详解# beg
2017-03-03 16:38:27
19171
4
原创 AndroidStudio2.1.2版本使用jdk1.7完美创建工程(不用jdk1.8)
AndroidStudio到目前为止的最新版是2.1.2(基于书写本博客时间),在最新版本的环境下创建的Android工程默认必须是用JDK1.8,对于不想使用JDK1.8或者其他原因无法使用JDK1.8的情况下如何使新建的工程完美匹配JDK1.7呢?步骤如下:修改compileSdkVersion为23(或其他小于24的版本除了23其他的优待验证)修改buildToolsVersio
2016-08-26 15:28:04
5583
1
原创 Android 使用ViewPager真正实现左右无限滑动(附源码)
前言 网上有很多使用ViewPager实现左右滑动这一效果的资料,这些资料大多数都是将PagerAdapter中getCount()方法的返回值设为Integer.MAX_VALUE使用户看不到边界,然后在instantiateItem()方法中通过position%(要循环显示的数据集的长度)的方式取得对应的数据集。这样虽然可以做到无限循环,但是会有两个弊端:首先会创建
2016-08-13 17:48:35
2609
原创 Java如何向容器中添加一组元素详解(附源码)
前言 在java.util包中的Arrays和Collections类中都有很多实用方法,可以在一个Collection中添加一组元素。Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),并将其转换为一个List对象。Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分隔的元素列表
2016-08-06 15:53:42
2720
3
原创 Java容器类类库基本概念详解
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。Map。一组成对的“键值对”对象,允许你使用键来查找值。ArrayList允许你使用数字来查找值,因此在某种意义上
2016-08-06 10:07:03
1409
原创 Java之局部内部类和匿名内部类的区别详解(附源码)
前言 前面提到过,可以在代码块里创建内部类,典型的方式是在一个方法体里面创建。局部内部类不能有访问说明符,因为它不是外围类的一部分;但是他可以访问当前代码块内的常量,以及此外围类的所有成员。下面的例子对局部内部类与匿名内部类的创建进行了比较。示例源码package com.mufeng.thetenthchapter;interface Coun
2016-08-04 11:38:10
2656
2
原创 Java之内部类可以被覆盖吗详解(附源码)
前言 如果创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?也就是说,内部类可以被覆盖吗?这看起来似乎是个很有用的思想,但是“覆盖”内部类就好像它是外围类的一个方法,其实并不起什么作用:示例源码1package com.mufeng.thetenthchapter;class Egg { private Yolk y; publ
2016-08-04 10:21:54
1728
原创 Java之内部类的继承(附源码)
前言 因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,事情会变得有点复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化,而在导出类中不再存在可连接的默认对象。要解决这个问题,必须使用特殊的语法来明确说清它们之间的关系:示例源码package com.mufeng.thetenthchapter;class
2016-08-03 15:23:50
842
原创 Java之内部类与向上转型详解(附源码)
前言 当将内部类向上转型为其基类,尤其是转型为一个接口的时候,内部类就有了用武之地。(从实现了某个接口的对象,得到对此接口的引用,与向上转型为这个对象的基类,实质上效果是一样的。)这是因为此内部类----某个接口的实现----能够完全不可见,并且不可用。所得到的只是指向基类或者接口的引用,所以能够很方便地隐藏实现细节。示例接口 我们
2016-07-26 11:21:11
1126
原创 Java之内部类链接到外部类(外围类)详解(附源码)
前言 到目前为止,内部类似乎还只是一种名字隐藏和组织代码的模式。这些是很有用,但还不是最引人注目的,它还有其他用途。当生成一个内部类的对象时,此对象与制造它的外围对象之间就有了一种联系,所以它能访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。下面的例子说明了这点:示例源码package com.mufeng
2016-07-23 15:34:57
2108
原创 Java之内部类的初级应用详解(附源码)
示例源码 在本节中我们将讲述内部类应用中的一个更典型的情况:外部类将有一个方法,该方法返回一个指向内部类的引用,就像在to()和contents()方法中看到的那样。package com.mufeng.thetenthchapter;public class Parcell2 { class Contents { private int i = 11
2016-07-23 10:29:44
938
原创 Java之内部类语法详解(附源码)
前言 可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。然而必须要了解,内部类与组合是完全不同的概念,这一点很重要。 在最初,内部类可能看起来比较奇怪,而且要花些时间才能在设计中轻松地使用它们。对内部类的需求并非总是很明显的,但是在描述完
2016-07-23 09:58:00
858
原创 Java之接口与工厂详解二(附源码)
前言 如果不是用工厂方法,你的代码就必须在某处指定将要创建的Service的确切类型,以便调用合适的构造器。 为什么我们想要添加这种额外级别的间接性呢?一个常见的原因是想要创建框架:假设你正在创建一个对弈游戏系统,例如,在相同的棋盘上下国际象棋和西洋跳棋:示例代码package com.mufeng.theninthchapter
2016-07-21 17:07:45
1994
原创 Java之接口与工厂详解一(附源码)
前言 接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。这与直接调用构造器不同,我们在工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象。理论上,通过这种方式,我们的代码将完全与接口的实现分离,这就使得我们可以透明地将某个实现替换成另一个实现。下面的实例展示了工厂方法的结构:示例源码package com
2016-07-21 16:50:51
2291
原创 Java之嵌套接口详解(附源码)
示例源码接口可以嵌套在类或其他接口中。这揭示了许多非常有趣的特性:package com.mufeng.theninthchapter;class A { interface B { void f(); } public class BImp implements B { @Override public void f() { // TODO
2016-07-21 11:51:08
3992
原创 Java之通过继承来扩展接口
示例源码 通过继承,可以很容易地在接口中添加新的方法声明,还可以通过继承在新接口中组合数个接口。这两种情况都可以获得新的接口,就像在下例中看到的:package com.mufeng.theninthchapter;interface Monster {// 怪物 void menace();// 威胁}interface DangerousMonste
2016-07-20 15:57:49
3373
原创 Java之用继承进行设计详解(附源码)
前言 学习了多态之后,看起来似乎所有东西都可以被继承,因为多态是一种如此巧妙的工具。事实上,当我们用现成的类来建立新类时,如果首先考虑使用继承技术,反倒会加重我们的设计负担,使事情变得不必要地复杂起来。 更好的方法是首先选择“组合”,尤其是不能十分确定应该使用哪一种方式时。组合不会强制我们的程序设计进入继承的层次结构中。而且,组合更加灵活,因为它可以动态选择类型
2016-07-16 12:00:04
1423
原创 Java之协变返回类型详解(附源码)
前言 Java SE5中添加了协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型:示例源码package com.mufeng.theeighthchapter;class Grain { @Override public String toString() { // TODO Auto-generated me
2016-07-16 11:25:20
1252
原创 构造器内部的多态方法的行为详解(附源码)
前言 构造器调用的层次结构带来了一个有趣的两难问题。如果在一个构造器的内部调用正在构造的对象的某个动态绑定方法,那会发生什么情况呢?在一般的方法内部,动态绑定的调用是在运行时才决定的,因为对象无法知道它是属于方法所在的那个类,还是属于那个类的导出类。 如果要调用构造器内部的一个动态绑定方法,就要用到那个方法的被覆盖后的定义。然而,这个调用的效果可能相当难于预料,
2016-07-15 16:02:32
1047
原创 Java中共享对象的创建与销毁详解(附源码)
前言 在上一篇文章的示例中还应该注意到,Frog对象拥有其自己的成员对象。Frog对象创建了它自己的成员对象,并且知道它们存活多久(只要Frog存活着),因此Frog对象知道何时调用dispose()去释放其成员对象。然而,如果这些成员对象中存在于其他一个或者多个对象共享的情况,问题就变得更加复杂了,你就不能简单地假设你可以调用dispose()了。在这种情况下,也就必需使用
2016-07-15 10:52:28
916
1
原创 Java中包含继承关系时对象的创建与销毁顺序详解(附源码)
前言 通过组合和继承方法来创建新类时,永远不必担心对象的清理问题,子对象通常都会留给垃圾回收器进行处理。如果确实遇到清理的问题,那么必须用心为新类创建dispose()方法(在这里我选用此名称,读者可以提出更好的)。并且由于继承的缘故,如果我们有其他作为垃圾回收一部分的特殊清理动作,就必须在导出类中覆盖dispose()方法。当覆盖被继承类的dispose()方法时,务必记
2016-07-13 11:52:16
2457
原创 引入多态后构造器的调用顺序
前言 基类的构造器总是在导出类的构造过程中被调用,而且按照继承层次逐渐向上链接,以使每个基类的构造器都能得到调用。这样做是有意义的,因为构造器具有一项特殊任务:检查对象是否被正确的构造。导出类只能访问它自己的成员,不能访问基类中的成员(基类成员通常是private类型)。只有基类的构造器才具有恰当的知识和权限来对自己的元素进行初始化。因此,必须令所有构造器都得到调用,否则
2016-07-08 15:35:22
1732
原创 包括继承的类的初始化及类的加载二(附源码)
前言 在许多传统语言中,程序是作为启动过程的一部分立刻被加载的。然后是初始化,紧接着程序开始运行。这些语言的初始化过程必须小心控制,以确保定义为static的东西,其初始化顺序不会造成麻烦。例如C++中,如果某个static期望另一个static在被初始化之前就能有效地使用它,那么就会出现问题。 Java就不会出现这个问题,因为它采用了一种不同的加载方式。加
2016-07-06 14:34:14
1198
原创 包括继承的类的初始化及类的加载一(附源码)
前言 在许多传统语言中,程序是作为启动过程的一部分立刻被加载的。然后是初始化,紧接着程序开始运行。这些语言的初始化过程必须小心控制,以确保定义为static的东西,其初始化顺序不会造成麻烦。例如C++中,如果某个static期望另一个static在被初始化之前就能有效地使用它,那么就会出现问题。 Java就不会出现这个问题,因为它采用了一种不同的加载方式。加
2016-07-06 11:33:57
1059
原创 JAVA代码重用机制复用类之继承语法(附源码)
前言 继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。 组合的语法比较平实,但是继承使用的是一种特殊语法。在继承过程中,需要先声明“新类与旧类相似”。这种声明是通过在类主体的左边花括号之前,书写后面紧随基类名称的关键字exten
2016-07-01 16:11:58
3302
原创 JAVA复用类之组合语法的使用(附源码)
前言 复用代码是Java众多引人注目的功能之一。但是要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。 上述方法常为C这类过程型语言所使用,但收效并不是很好。正如Java中所有事物一样,问题解决都是围绕类展开的。可以通过创建新类来复用代码,而不必再从头开始编写。可以使用别人业已开发并调试好的类。
2016-07-01 11:13:37
2934
原创 Java 中break和continue结合标签标示符中断循环示例详解(附源码)
臭名昭著的goto 编程语言中一开始就有goto关键词了。事实上,goto起源于汇编语言的程序控制:“若条件A成立,则跳到这里;否则跳到那里”。如果阅读由编译器最终生成的汇编代码,就会发现程序控制里包含了许多跳转。(Java编译器生成它自己的“汇编代码”,但是这个代码是运行在Java虚拟机上的,而不是直接运行在CPU硬件上。) goto语句是在源码级上的跳转,这使其
2016-06-16 16:07:19
3680
原创 java中break和continue的区别详解(附源码)
序言 在自己学习java语言的过程中,很容易把break和continue的用法混淆。为了便于以后快速查阅及温习,在此特留学习笔记一份。简述 在任何迭代语句的主体部分,都可以用break和continue控制循环的流程。其中,break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前迭代,然后退回循环起始处,开始下一次迭代。
2016-06-16 09:33:27
3022
1
原创 MVC for Android
在Android开发中,比较流行的开发框架模式采用的是MVC框架模式,采用MVC模式的好处是便于UI界面部分的显示和业务逻辑,数据处理分开。那么问题来了,在Android项目的开发中哪些代码来充当M,V,C角色呢?下面结合Android项目的具体结构对MVC for Android 做简要剖析。M(Model)模型层 适合做一些业务逻辑处理,比如对数据库的存取操作、对网络等的数
2016-05-10 11:32:28
1350
原创 MVC框架模式(二)
上一篇文章对MVC框架模式做了简要概述并且在文章的最后给出了MVC3个组件之间相互工作的逻辑图,在本文我们将进一步对模型(model)-视图(view)-控制器(controller)各自的概念及他们之间协同工作的原理进行剖析。模型(Model)业务逻辑层,封装了业务逻辑和数句业务逻辑(软件的核心)数据以及访问它们的函数(视图组件使用)执行特定应用程
2016-05-09 16:52:28
1145
原创 MVC框架模式(一)
MVC概念 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 MVC模式将一个交互式应用程序分成3个组件:
2016-05-09 15:36:58
679
原创 Android PopupWindow实现从顶部弹出下拉菜单左、中、右
本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计。弹出的动画效果主要用到了translate、alpha、scale,具体实现步骤如下: 先上效果图如下:左边下拉菜单、中间下拉菜单、右边下拉菜单
2015-10-19 19:08:05
23098
1
原创 Android 用EditText加一个ImageButton自定义一个带clear的搜索框
最近在做一个项目,里面的通讯录功能有个需求:根据汉字姓名、拼音姓名、手机号码对通讯录中的联系人进行搜索,刚开始想到了使用SearchView,但是用了以后感觉该控件不够灵活,到不到UI设计的要求。所以就想到了自定义控件实现SearchView的功能,本文就带领大家一步步用EditText和ImageButton实现一个自定义的SearchView。 1.首先是自定义搜索框的布局文件 se
2015-09-17 14:14:13
1561
android4.2日历 Calendar应用程序源码
2014-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人