Android10大必备开发工具
- 格式:doc
- 大小:30.00 KB
- 文档页数:2
开发安卓应用的技术与工具安卓应用开发已经成为了当今科技行业中的热门话题之一。
随着智能手机的普及和用户对移动应用的需求的不断增加,越来越多的开发者开始学习和使用安卓开发技术。
本文将详细介绍一些与开发安卓应用相关的技术和工具,以帮助读者更好地了解并入门安卓应用开发。
一、Java编程语言1. Java是开发安卓应用最常用的编程语言之一,学习和掌握Java语言对于开发安卓应用来说是必不可少的。
2. 通过Java编程语言,开发者可以实现应用的逻辑处理、界面设计、数据处理等各个功能。
二、Android Studio1. Android Studio是谷歌官方提供的安卓开发集成开发环境(IDE),提供了丰富的开发工具和功能。
2. Android Studio支持代码编写、调试、布局设计、测试、性能分析等一系列开发环节,大大提高了开发效率和代码质量。
三、XML1. XML(可扩展标记语言)在安卓应用开发中起到了重要的作用,用于定义应用的布局和界面设计。
2. 通过XML语言,开发者可以灵活地定义应用的UI(User Interface),实现各种交互效果和界面布局。
四、Android SDK1. Android SDK(Software Development Kit)是安卓应用开发的软件开发工具包。
2. 它包含了为开发安卓应用所需的各种工具、库和资源,包括安卓平台的API 文档、调试工具、模拟器等。
五、Gradle构建系统1. Gradle是一种基于Groovy语言的构建自动化工具,用于管理和构建安卓应用的项目。
2. 利用Gradle,开发者可以方便地管理项目的依赖关系、打包发布应用等。
六、Android应用生命周期1. Android应用的生命周期指的是应用从启动到关闭所经历的各个阶段。
2. 开发者需要了解应用生命周期,以便在合适的时机处理应用的状态变化、资源回收等。
七、安卓平台API1. 安卓平台API提供了丰富的功能和类库,支持应用的各个方面。
移动应用开发中常用的开发工具介绍随着移动互联网的快速发展,移动应用的开发变得越来越重要。
为了提高开发效率和质量,开发者们通常会采用一些常用的开发工具来辅助开发工作。
本文将介绍一些移动应用开发中常用的开发工具,希望能够为开发者们提供一些参考和指导。
1. IDE(集成开发环境)IDE(Integrated Development Environment)是开发者进行软件开发的核心工具之一。
在移动应用开发中,常用的IDE包括Android Studio和Xcode。
Android Studio是由Google官方推出的Android应用开发工具,提供了全套的开发环境和开发工具,支持Java和Kotlin等编程语言,功能强大且易于使用。
它包含了代码编辑器、编译器、调试器和GUI构建器等模块,开发者可以在一个集成的开发环境中完成所有的开发工作。
Xcode则是苹果公司推出的iOS和Mac应用开发工具。
它是一个功能完备的开发环境,集成了代码编辑器、编译器、调试器和图形化界面构建工具等。
开发者可以使用Objective-C、Swift等编程语言进行开发,并且可以通过接口集成其他第三方工具和库。
2. 编辑器除了IDE外,一些开发者也喜欢使用轻量级的编辑器来进行开发。
常用的编辑器有Sublime Text、Visual Studio Code和Atom等。
Sublime Text是一款功能强大且高度可定制的文本编辑器。
它支持多种编程语言,并且有丰富的插件和主题可供选择。
开发者可以通过修改配置文件来满足自己的需求,提高开发效率和舒适度。
Visual Studio Code是微软开发的免费开源编辑器,支持多种编程语言,并具有强大的代码编辑、调试和版本控制功能。
它还支持市场上常见的框架和工具,如React Native和Flutter等。
Atom是由GitHub开发的免费开源编辑器,具有丰富的插件生态系统。
开发者可以通过安装插件来扩展其功能,并自定义主题和布局,使其更适合个人需求。
Android应用开发入门框架比较选型在当今移动应用开发领域,Android平台已成为最为流行和广泛使用的操作系统之一。
而想要进入Android应用开发领域,选择一个适合自己的开发框架是非常重要的。
本文将对几种常用的Android应用开发入门框架进行比较和选型建议。
一、Android Studio + JavaAndroid Studio是一款由谷歌官方推出的集成开发环境,基于IntelliJ IDEA开发,主要使用Java语言进行Android应用开发。
它提供了丰富的开发工具和组件,以及灵活的调试和测试功能。
使用Java进行开发,可以充分利用Java语言的成熟生态系统和丰富的开发资源。
优点:1. 官方支持:Android Studio由谷歌官方推出,拥有强大的官方支持和更新。
2. 开发工具:Android Studio提供了强大的开发工具和自动化功能,可以提高开发效率。
3. 社区支持:由于Android Studio的广泛应用,开发者可以轻松获得社区支持和资源。
缺点:1. 学习曲线:对于初学者来说,学习Java语言和Android Studio的使用可能会有一定的学习曲线。
2. 项目依赖:Java的项目依赖管理相对复杂,可能需要花费更多的时间和精力。
二、Kotlin + Android StudioKotlin是一种基于Java虚拟机的静态类型编程语言,由JetBrains开发。
Kotlin与Java具有很好的互操作性,并且在代码简洁性、安全性和表达能力方面有着许多优势。
Kotlin已经成为Android开发的首选语言,越来越多的开发者在使用Kotlin进行Android应用开发。
优点:1. 简洁性:Kotlin代码相对于Java更加简洁、易读,减少了开发代码的量。
2. 安全性:Kotlin具有更严格的类型检查和空值检查,可以减少潜在的运行时异常。
3. 互操作性:Kotlin与Java语言具有良好的互操作性,可以与现有的Java代码进行整合。
移动端开发工具的推荐随着移动互联网的发展,移动端应用开发成为了一个前景广阔的领域。
为了提高开发效率和质量,各种移动端开发工具应运而生。
然而,市场上的工具种类繁多,如何选择出适合自己的工具呢?本文将对几款常用的移动端开发工具进行推荐和介绍。
1. 原生开发工具原生开发工具是指专门为一种操作系统开发的工具,例如Android开发者使用Android Studio,而iOS开发者使用Xcode。
原生开发工具具有强大的功能和较高的稳定性,且开发出的应用体验流畅。
同时,开发者可以使用该系统提供的API,实现丰富的功能。
2. FlutterFlutter是谷歌推出的UI框架,可以轻松开发高保真度、高性能的原生应用程序。
Flutter采用Dart语言进行开发,同时支持Android和iOS两种操作系统,开发者可以利用它们发布应用。
Flutter提供了丰富的组件库和插件,且开发者可以自由定制和自定义组件,从而大幅度提高APP的开发效率。
3. React NativeReact Native是Facebook推出的JavaScript框架,同时支持Android和iOS两种操作系统,开发者可以利用它们发布应用。
React Native可以复用部分原生代码库,从而提高了开发效率。
同时,React Native提供了丰富的组件库和插件,且开发者可以自由定制和自定义组件。
总之,React Native是快速开发移动应用的利器。
4. XamarinXamarin是微软推出的跨平台移动应用开发平台,它提供了C#语言、Visual Studio开发环境和.NET基础设施,支持Android、iOS和Windows三种操作系统。
Xamarin可以学习和实践后,可以比较快速的开发出符合用户需求的应用,并且使用Xamarin开发的应用程序可以获得接近原生应用的性能和体验。
5. IonicIonic是一个混合式应用程序框架,可以使用HTML、CSS和JavaScript开发出适用于Android和iOS平台的应用程序。
移动应用开发中常用的开发环境和工具有哪些移动应用开发已经成为当今科技领域的热门话题之一,随着智能手机的普及和移动互联网的发展,越来越多的人开始关注和参与到移动应用的开发中。
而要进行移动应用开发,一个重要的前提就是选择合适的开发环境和工具。
本文将介绍一些常用的移动应用开发环境和工具,希望能对读者有所帮助。
一、开发环境1. Android Studio:Android Studio是Google官方推出的Android应用开发工具,集成了Android开发所需的各种功能,如代码编辑器、调试工具、性能分析工具等。
它基于IntelliJ IDEA开发,提供了丰富的插件和模板,方便开发者快速构建Android应用。
2. Xcode:Xcode是苹果官方推出的iOS应用开发工具,支持开发iOS、macOS、watchOS和tvOS应用。
它提供了强大的编辑器、调试器和界面设计工具,还包含了iOS模拟器,方便开发者在不同设备上测试应用。
3. Visual Studio:Visual Studio是微软推出的跨平台集成开发环境,支持开发Windows、Android和iOS应用。
它提供了丰富的开发工具和调试器,能够大大提高开发效率。
同时,Visual Studio还支持多种编程语言,如C#、C++、Java等,满足不同开发者的需求。
二、开发工具1. Flutter:Flutter是Google推出的跨平台移动应用开发框架,可以用一套代码同时开发iOS和Android应用。
它使用Dart语言进行开发,具有快速渲染、高性能和丰富的UI库等特点。
Flutter还提供了热重载功能,能够实时查看应用的变化,方便开发者进行调试和测试。
2. React Native:React Native是Facebook推出的跨平台移动应用开发框架,使用JavaScript语言进行开发。
它基于React.js库,通过使用原生组件封装和JavaScript与原生代码的通信,实现了高性能的移动应用开发。
移动应用开发常用开发工具推荐移动应用开发是当前互联网行业中快速发展的领域之一。
随着智能手机的普及和移动互联网的蓬勃发展,越来越多的企业和个人开始关注和投入移动应用开发。
为了能够高效、快速地进行移动应用开发,选择合适的开发工具非常重要。
本文将介绍几款常用的移动应用开发工具。
第一款是Android Studio。
作为目前最权威的Android开发工具,Android Studio集成了各种开发所需的功能,如布局设计器、代码编辑器、调试器等等。
它基于IntelliJ IDEA开发,具有强大的插件系统,支持Java和Kotlin语言的开发。
Android Studio提供了丰富的开发模板和示例代码,能够快速创建基础框架,并自动生成项目结构。
此外,Android Studio还提供了模拟器和真机调试和测试工具,方便开发者调试和测试应用。
第二款是Xcode。
作为苹果公司推出的集成开发环境,Xcode是开发iOS和macOS应用的首选工具。
它提供了强大的界面设计工具,如Interface Builder,可以直观地设计和布局应用的界面。
Xcode还集成了开发和调试工具,如代码编辑器、静态分析器和性能检测器等等。
通过连接真机,开发者可以直接在设备上运行和调试应用,提高开发效率。
第三款是React Native。
作为一种跨平台的移动应用开发框架,React Native基于JavaScript语言,可以用于开发Android和iOS应用。
它采用了声明式的UI编程范式,通过组件化的方式搭建应用界面,实现代码的可复用和跨平台。
React Native提供了一系列功能强大的组件和API,可以轻松实现复杂的交互效果和动画。
通过热更新技术,开发者可以实时预览和调试应用,减少开发周期。
第四款是Flutter。
Flutter是谷歌推出的跨平台移动应用开发框架,它基于Dart语言,有着优秀的性能和良好的开发体验。
Flutter提供了丰富的UI组件和开发工具,开发者可以通过代码编写和调试应用。
常用的Android开发工具有哪些工欲善其事,必先利其器。
学Android开发,需要选择适合自己的Android开发工具。
市场现存很多Android开发工具,Android Studio、Eclipse+ADT+SDK三组件整合开发等,程序员选择适合自己的开发工具,编程工作将更加顺手,但是,编写成功的代码需要踏踏实实努力,掌握过硬的专业技术。
Android开发工具——Android Studi具有很多优点。
能让应用开发更简单,它相比以前Eclipse 的开发工具最大特点就是支持实时渲染,程序员可以在编写程序的同时可以实时看到自己的应用在不同尺寸屏幕中的样子,所见即所得,非常的方便;然后,Android Studio 还解决了语言问题,支持翻译和多语言版本让程序员更方便地开发适应全球的应用;而且,Android Studio在速度和性能上的表现要优秀得多,谷歌声称,相比旧版本,新版本Android Studio在速度和性能上提升了三倍,将会让程序员更快、更具生产力。
是非常难受欢迎的一款android开发工具。
此外,Android Studio 还具有一些特色:Instant Run 即时运行代码、Android Emulator 新的安卓模拟器、云端测试实验室集成、应用索引代码生成与测试、GPU调试器预览等等,都为程序员带来了极大的方便。
Android开发工具——Eclipse+ADT+SDK 三组件整合开发市场上很多老用户仍在使用Eclipse+ADT+SDK三组件整合开发。
android大部分的开发都是中间层到顶层的应用开发,所以基本上也是java开发,eclipse 是开发java必备,也是android必备。
eclipse就是最普遍用的开发工具,方便编程,相关配置有ADT插件和模拟器SDK。
需要前提是先安装JDK1.6,然后下载android的SDK和ADT,接着安装AVD,设置环境变量。
移动应用开发的必备工具介绍移动应用开发已经成为现代科技领域中的一个热门话题。
随着智能手机和平板电脑的普及,越来越多的人开始关注和使用移动应用。
而在开发移动应用的过程中,选择适合的工具和技术,将会对开发者的效率和成果产生重要影响。
本文将介绍几种移动应用开发的必备工具,帮助开发者更好地进行移动应用开发。
一、集成开发环境(IDE)集成开发环境是移动应用开发中必不可少的工具之一。
它提供了一站式的解决方案,包括代码编辑、编译、调试等功能。
目前市面上有许多流行的IDE可供选择,如Android Studio、Xcode等。
Android Studio是一款专为Android应用开发而设计的IDE,它提供了丰富的工具和功能,帮助开发者快速构建高质量的Android应用。
而Xcode则是苹果公司为iOS应用开发提供的IDE,它集成了各种工具和模拟器,方便开发者进行应用测试和调试。
二、版本控制工具版本控制工具是开发团队中必不可少的工具之一。
它可以帮助开发者管理代码的变更和版本,协同开发,以及回滚代码等操作。
目前最流行的版本控制工具是Git。
Git是一个分布式版本控制系统,它具有高效、快速、灵活等特点。
通过Git,开发者可以轻松地管理代码的变更和版本,保证团队协作的顺利进行。
三、模拟器和真机测试工具在移动应用开发过程中,模拟器和真机测试是非常重要的环节。
模拟器可以模拟不同的设备和操作系统,帮助开发者进行应用的测试和调试。
而真机测试则更加接近实际使用环境,能够更准确地检测应用的性能和稳定性。
对于Android开发者来说,Android模拟器是一个重要的工具。
它可以模拟不同的Android设备和版本,帮助开发者进行应用的测试和调试。
而对于iOS开发者来说,Xcode提供了强大的模拟器,可以模拟不同的iOS设备和版本,方便开发者进行应用测试和调试。
四、性能分析工具性能分析工具是帮助开发者评估应用性能和优化的重要工具。
它可以帮助开发者发现应用中的性能问题,如内存泄漏、CPU占用过高等。
安卓app开发用什么软件安卓App开发用什么软件在移动应用市场不断发展壮大的背景下,越来越多的人开始关注并投身于移动应用的开发领域。
而在众多移动操作系统中,安卓系统无疑是最为广泛使用的操作系统之一。
那么,对于开发者而言,他们要使用哪些软件来进行安卓App的开发呢?本文将会介绍几种常用的安卓App开发软件,帮助小白开发者们快速上手。
1. Android Studio:Android Studio是一款官方提供的、基于IntelliJ IDEA开发的专业安卓开发工具。
它是由Google官方推出的,提供了一整套用于安卓App开发的开发环境。
Android Studio拥有强大的功能和丰富的插件,为开发者提供了各种开发工具,如多设备远程调试、APK分析等。
此外,Android Studio还有强大的集成开发环境,可以帮助开发者完成代码编写、代码调试、界面布局等工作。
作为一款功能强大且稳定的开发工具,Android Studio被广大开发者广泛采用。
2. Eclipse:Eclipse是一个可扩展的开源IDE,被广泛用于开发各种类型的应用程序,包括安卓App的开发。
虽然Android Studio逐渐成为主流,但仍有一些开发者习惯使用Eclipse进行安卓App的开发。
Eclipse提供了丰富的插件和工具,具备强大的代码编辑、代码导航、调试等功能。
对于习惯使用Eclipse的开发者来说,使用Eclipse进行安卓App开发也是一种不错的选择。
3. IntelliJ IDEA:IntelliJ IDEA是一款由JetBrains开发的Java开发工具。
通过安装相应的插件,IntelliJ IDEA也可以用于进行安卓App的开发。
作为一款功能丰富且易于使用的开发工具,IntelliJ IDEA提供了智能代码编辑、代码导航、代码重构等实用功能,使得开发者可以更高效地进行开发工作。
尤其是对于有Java开发经验的开发者来说,使用IntelliJ IDEA进行安卓App开发是一种很好的选择。
Android开发10个常用工具类1、日志工具类L.javapackage com.zhy.utils;import android.util.Log;/*** Log统一管理类****/public class L{private L(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化private static final String TAG = "way";// 下面四个是默认tag的函数public static void i(String msg){if (isDebug)Log.i(TAG, msg);}public static void d(String msg){if (isDebug)Log.d(TAG, msg);}public static void e(String msg){if (isDebug)Log.e(TAG, msg);}public static void v(String msg){if (isDebug)Log.v(TAG, msg);}// 下面是传入自定义tag的函数public static void i(String tag, String msg) {if (isDebug)Log.i(tag, msg);}public static void d(String tag, String msg) {if (isDebug)Log.i(tag, msg);}public static void e(String tag, String msg){if (isDebug)Log.i(tag, msg);}public static void v(String tag, String msg){if (isDebug)Log.i(tag, msg);}}网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~2、Toast统一管理类package com.zhy.utils;import android.content.Context;import android.widget.Toast;/*** Toast统一管理类**/public class T{private T(){/** cannot be instantiated**/throw new UnsupportedOperationException("cannot be instantiated"); }public static boolean isShow = true;/*** 短时间显示Toast** @param context* @param message*/public static void showShort(Context context, CharSequence message) {if (isShow)Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); }/*** 短时间显示Toast** @param context* @param message*/public static void showShort(Context context, int message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); }/*** 长时间显示Toast** @param context* @param message*/public static void showLong(Context context, CharSequence message) {if (isShow)Toast.makeText(context, message, Toast.LENGTH_LONG).show(); }/*** 长时间显示Toast** @param context* @param message*/public static void showLong(Context context, int message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_LONG).show(); }/*** 自定义显示Toast时间** @param context* @param message* @param duration*/public static void show(Context context, CharSequence message, int duration){if (isShow)Toast.makeText(context, message, duration).show();}/*** 自定义显示Toast时间** @param context* @param message* @param duration*/public static void show(Context context, int message, int duration){if (isShow)Toast.makeText(context, message, duration).show();}}也是非常简单的一个封装,能省则省了~~3、SharedPreferences封装类SPUtils package com.zhy.utils;import ng.reflect.InvocationTargetException;import ng.reflect.Method;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;public class SPUtils{/*** 保存在手机里面的文件名*/public static final String FILE_NAME = "share_data";/*** 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法** @param context* @param key* @param object*/public static void put(Context context, String key, Object object){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();if (object instanceof String){editor.putString(key, (String) object); } else if (object instanceof Integer){editor.putInt(key, (Integer) object);} else if (object instanceof Boolean){editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float){editor.putFloat(key, (Float) object);} else if (object instanceof Long){editor.putLong(key, (Long) object);} else{editor.putString(key, object.toString()); }SharedPreferencesCompat.apply(editor);}/*** 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值** @param context* @param key* @param defaultObject* @return*/public static Object get(Context context, String key, Object defaultObject){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);if (defaultObject instanceof String){return sp.getString(key, (String) defaultObject);} else if (defaultObject instanceof Integer){return sp.getInt(key, (Integer) defaultObject);} else if (defaultObject instanceof Boolean){return sp.getBoolean(key, (Boolean) defaultObject);} else if (defaultObject instanceof Float){return sp.getFloat(key, (Float) defaultObject);} else if (defaultObject instanceof Long){return sp.getLong(key, (Long) defaultObject);}return null;}/*** 移除某个key值已经对应的值* @param context* @param key*/public static void remove(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.remove(key);SharedPreferencesCompat.apply(editor);}/*** 清除所有数据* @param context*/public static void clear(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.clear();SharedPreferencesCompat.apply(editor);}/*** 查询某个key是否已经存在* @param context* @param key* @return*/public static boolean contains(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);return sp.contains(key);}/*** 返回所有的键值对** @param context* @return*/public static Map<String, ?> getAll(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);return sp.getAll();}/*** 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类** @author zhy**/private static class SharedPreferencesCompat{private static final Method sApplyMethod = findApplyMethod();/*** 反射查找apply的方法** @return*/@SuppressWarnings({ "unchecked", "rawtypes" })private static Method findApplyMethod(){try{Class clz = SharedPreferences.Editor.class;return clz.getMethod("apply");} catch (NoSuchMethodException e){}return null;}/*** 如果找到则使用apply执行,否则使用commit** @param editor*/public static void apply(SharedPreferences.Editor editor) {try{if (sApplyMethod != null){sApplyMethod.invoke(editor);return;}} catch (IllegalArgumentException e){} catch (IllegalAccessException e){} catch (InvocationTargetException e){}mit();}}}对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply 进行了替代,目的是尽可能的使用apply代替commit首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit 操作都是UI线程中,毕竟是IO操作,尽可能异步;所以我们使用apply进行替代,apply异步的进行写入;但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~4、单位转换类DensityUtilspackage com.zhy.utils;import android.content.Context;import android.util.TypedValue;/*** 常用单位转换的辅助类****/public class DensityUtils{private DensityUtils(){/** cannot be instantiated **/throw new UnsupportedOperationException("cannot be instantiated");}/*** dp转px** @param context* @param val* @return*/public static int dp2px(Context context, float dpVal){return (int)TypedValue.applyDimension(PLEX_UNIT_DIP,dpVal,context.getResources().getDisplayMetrics());}/*** sp转px** @param context* @param val* @return*/public static int sp2px(Context context, float spVal) {return (int)TypedValue.applyDimension(PLEX_UNIT_SP,spVal,context.getResources().getDisplayMetrics());}/*** px转dp** @param context* @param pxVal* @return*/public static float px2dp(Context context, float pxVal) {final float scale =context.getResources().getDisplayMetrics().density;return (pxVal / scale);}/*** px转sp** @param fontScale* @param pxVal* @return*/public static float px2sp(Context context, float pxVal) {return (pxVal /context.getResources().getDisplayMetrics().scaledDensity);}}5、SD卡相关辅助类SDCardUtils package com.zhy.utils;import java.io.File;import android.os.Environment;import android.os.StatFs;/*** SD卡相关的辅助类****/public class SDCardUtils{private SDCardUtils(){/** cannot be instantiated **/throw new UnsupportedOperationException("cannot be instantiated"); }/*** 判断SDCard是否可用** @return*/public static boolean isSDCardEnable(){return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED);}/*** 获取SD卡路径** @return*/public static String getSDCardPath(){returnEnvironment.getExternalStorageDirectory().getAbsolutePath() + File.separator;}/*** 获取SD卡的剩余容量单位byte** @return*/public static long getSDCardAllSize(){if (isSDCardEnable()){StatFs stat = new StatFs(getSDCardPath());// 获取空闲的数据块的数量long availableBlocks = (long) stat.getAvailableBlocks() - 4; // 获取单个数据块的大小(byte)long freeBlocks = stat.getAvailableBlocks();return freeBlocks * availableBlocks;}return 0;}/*** 获取指定路径所在空间的剩余可用容量字节数,单位byte** @param filePath* @return 容量字节 SDCard可用空间,内部存储可用空间*/public static long getFreeBytes(String filePath){// 如果是sd卡的下的路径,则获取sd卡可用容量if (filePath.startsWith(getSDCardPath())){filePath = getSDCardPath();} else{// 如果是内部存储的路径,则获取内存存储的可用容量filePath = Environment.getDataDirectory().getAbsolutePath(); }StatFs stat = new StatFs(filePath);long availableBlocks = (long) stat.getAvailableBlocks() - 4;return stat.getBlockSize() * availableBlocks;}/*** 获取系统存储路径** @return*/public static String getRootDirectoryPath(){return Environment.getRootDirectory().getAbsolutePath(); }}6、屏幕相关辅助类ScreenUtils package com.zhy.utils;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Rect;import android.util.DisplayMetrics;import android.view.View;import android.view.WindowManager;/*** 获得屏幕相关的辅助类****/public class ScreenUtils{private ScreenUtils(){/** cannot be instantiated **/throw new UnsupportedOperationException("cannot be instantiated");}/*** 获得屏幕高度** @param context* @return*/public static int getScreenWidth(Context context){WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.widthPixels;}/*** 获得屏幕宽度** @param context* @return*/public static int getScreenHeight(Context context){WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels;}/*** 获得状态栏的高度** @param context* @return*/public static int getStatusHeight(Context context) {int statusHeight = -1;try{Class<?> clazz =Class.forName("com.android.internal.R$dimen");Object object = clazz.newInstance();int height =Integer.parseInt(clazz.getField("status_bar_height").get(object).toString());statusHeight =context.getResources().getDimensionPixelSize(height);} catch (Exception e){e.printStackTrace();}return statusHeight;}/*** 获取当前屏幕截图,包含状态栏** @param activity* @return*/public static Bitmap snapShotWithStatusBar(Activity activity) {View view = activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bmp = view.getDrawingCache();int width = getScreenWidth(activity);int height = getScreenHeight(activity);Bitmap bp = null;bp = Bitmap.createBitmap(bmp, 0, 0, width, height);view.destroyDrawingCache();return bp;}/*** 获取当前屏幕截图,不包含状态栏** @param activity* @return*/public static Bitmap snapShotWithoutStatusBar(Activity activity) {View view = activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bmp = view.getDrawingCache();Rect frame = new Rect();activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;int width = getScreenWidth(activity);int height = getScreenHeight(activity);Bitmap bp = null;bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);view.destroyDrawingCache();return bp;}}7、App相关辅助类package com.zhy.utils;import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import NotFoundException;/*** 跟App相关的辅助类****/public class AppUtils{private AppUtils(){/**cannot be instantiated **/throw new UnsupportedOperationException("cannot be instantiated");}/*** 获取应用程序名称*/public static String getAppName(Context context){try{PackageManager packageManager =context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo( context.getPackageName(), 0);int labelRes = belRes;return context.getResources().getString(labelRes);} catch (NameNotFoundException e){e.printStackTrace();}return null;}/*** [获取应用程序版本名称信息]** @param context* @return 当前应用的版本名称*/public static String getVersionName(Context context){try{PackageManager packageManager =context.getPackageManager();PackageInfo packageInfo = packageManager.getPackageInfo( context.getPackageName(), 0);return packageInfo.versionName;} catch (NameNotFoundException e){e.printStackTrace();}return null;}}8、软键盘相关辅助类KeyBoardUtils package com.zhy.utils;import android.content.Context;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;/*** 打开或关闭软键盘** @author zhy**/public class KeyBoardUtils{/*** 打卡软键盘** @param mEditText* 输入框* @param mContext* 上下文*/public static void openKeybord(EditText mEditText, Context mContext){InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(mEditText,InputMethodManager.RESULT_SHOWN);imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);}/*** 关闭软键盘** @param mEditText* 输入框* @param mContext* 上下文*/public static void closeKeybord(EditText mEditText, Context mContext){InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);}}9、网络相关辅助类NetUtilspackage com.zhy.utils;import android.app.Activity;import ponentName;import android.content.Context;import android.content.Intent;import .ConnectivityManager;import workInfo;/*** 跟网络相关的工具类****/public class NetUtils{private NetUtils(){/** cannot be instantiated **/throw new UnsupportedOperationException("cannot be instantiated");}/*** 判断网络是否连接** @param context* @returnpublic static boolean isConnected(Context context){ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (null != connectivity){NetworkInfo info = connectivity.getActiveNetworkInfo();if (null != info && info.isConnected()){if (info.getState() == NetworkInfo.State.CONNECTED){return true;}}}return false;/*** 判断是否是wifi连接*/public static boolean isWifi(Context context){ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);if (cm == null)return false;return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;}/*** 打开网络设置界面*/public static void openSetting(Activity activity)Intent intent = new Intent("/");ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");intent.setComponent(cm);intent.setAction("android.intent.action.VIEW");activity.startActivityForResult(intent, 0);}}10、Http相关辅助类HttpUtilspackage com.zhy.utils;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import .HttpURLConnection;import .URL;/*** Http请求的工具类** @author zhy**/public class HttpUtils{private static final int TIMEOUT_IN_MILLIONS = 5000;public interface CallBack{void onRequestComplete(String result);}/*** 异步的Get请求** @param urlStr* @param callBack*/public static void doGetAsyn(final String urlStr, final CallBack callBack){new Thread(){public void run(){try{String result = doGet(urlStr);if (callBack != null){callBack.onRequestComplete(result);}} catch (Exception e){e.printStackTrace();}};}.start();}/*** 异步的Post请求* @param urlStr* @param params* @param callBack* @throws Exception*/public static void doPostAsyn(final String urlStr, final String params,final CallBack callBack) throws Exception{new Thread(){public void run(){try{String result = doPost(urlStr, params); if (callBack != null){callBack.onRequestComplete(result); }} catch (Exception e){e.printStackTrace();}};}.start();}/*** Get请求,获得返回数据** @param urlStr* @return* @throws Exception*/public static String doGet(String urlStr){URL url = null;HttpURLConnection conn = null;InputStream is = null;ByteArrayOutputStream baos = null;try{url = new URL(urlStr);conn = (HttpURLConnection) url.openConnection();conn.setReadTimeout(TIMEOUT_IN_MILLIONS);conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);conn.setRequestMethod("GET");conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive"); if (conn.getResponseCode() == 200){is = conn.getInputStream();baos = new ByteArrayOutputStream();int len = -1;byte[] buf = new byte[128];while ((len = is.read(buf)) != -1){baos.write(buf, 0, len);}baos.flush();return baos.toString();} else{throw new RuntimeException(" responseCode is not 200 ... ");}} catch (Exception e){e.printStackTrace();} finally{try{if (is != null)is.close();} catch (IOException e) {}try{if (baos != null)baos.close();} catch (IOException e) {}conn.disconnect();}return null ;}/**。
1. Eclipse ADT
Eclipse ADT 是Eclipse 平台下用来开发Android 应用程序的插件。
2. The SDK and AVD Manager
该工具包含很多重要的功能,包括管理不同的Android SDK 版本(构建目标),你知道的Android 的版本众多,API上有些兼容性问题。
另外该工具还用于管理Android 虚拟设备配置(AVD) ,用来配置模拟器。
3. Android Debug Bridge
adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。
还可以进行以下的操作:
1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
2、在设备上运行shell命令;
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上复制或粘贴文件;
4. Dalvik Debug Monitor Server
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
5. The Android Emulator and Real Devices 模拟器和真实设备
一旦你开始开发Android 程序,那么你一定需要看到程序的运行结果,这就是Android 的模拟器,可让你在不同的设备上测试Android 应用的运行效果。
6. LogCat
LogCat 是Android中一个命令行工具,可以用于得到程序的log信息。
Android日志系统提供了记录和查看系统调试信息的功能。
日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat 命令来查看和使用.
7. The Hierarchy Viewer
Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat。
它是Android自带的非常有用而且使用简单的工具,可以帮助我
们更好地检视和设计用户界面(UI),绝对是UI检视的利器,但是好像很少有人提它,难道是因为太简单?
具体来说主要功能有2个:
1. 从可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计;
2. 结合debug帮助观察特定的UI对象进行invalidate和requestLayout操作的过程。
8. Draw 9-Patch
这个九宫格绘画工具(draw9patch.bat)可以让你很容易的通过一个所见即所得(WYS|WYG)的编辑器来创建一个九宫格NinePatch图。
9. The Monkey Test Tools
Monkey Test Tools 包括Monkey exerciser tool 和monkeyrunner 工具,主要用于程序的自动化测试。
10. ProGuard
ProGuard 是一个免费的Java类文件的压缩,优化,混肴器。
它删除没有用的类,字段,方法与属性。
使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法。
eclipse已经把Proguard集成在一起了
文章摘自:
贡献者:benben198805。