APP开发java常用开发工具工具有哪些?

app制作软件
智能手机流行的今天,app也火了起来,一个好的app会被大家下载安装,那么怎么制作app呢,有没有一个软件或者工具可以直接生产app软件呢?答案是肯定的,2345软件大家小编就为大家介绍一些比较好用的app制作软件,让你一分钟制作出你喜欢的app。推荐:
推荐指数:
大小:305.33MB
推荐理由:appMaker作为面向手机、平板、传统PC一款专业的富媒体编辑器,任何人都可用它制作出为iphone、iPad、android而设、windows平台的、精美的 Multi-Touch 电子书、以及各种行业的电子杂志、企业内刊 。
推荐理由:JPad Pro 是一个完整的 Java Applications 和 Java Applets 的开发环境,并且支持 HTML 及其它类型的文件。
1、编写、编译、运行、调试复杂的程序。
2、定位语法错误。
3、允许选择 Sun's JDK Java 和 MS Java SDK 工具。
4、使用内置的浏览器定位类、方法和包。
5、使用 JavaScript 编写自定义工具。
推荐理由:MyEclipse10是一款非常优秀的Java开发工具。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。
推荐理由:java游戏开发电子书下载。
推荐理由:Java反编译工具,实现了eclipse的高亮着色功能,多文件标签浏览......
推荐理由:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
推荐理由:Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
推荐理由:Android SDK(Android模拟器)是Google发布的一套开发工具,安装Android SDK可以方便开发者在手机上运行之前先在模拟器上测试应用。我们可以使用它在电脑上运行Android。
推荐理由:Android开发指南中文版下载,详细介绍安卓软件开发的应用程序基础、用户界面、视图层次、布局、部件、界面事件等技术概念。全书是对Android SDK1.5版的英文开发资料 Android Development Guide 应用程序框架部分的翻译,覆盖了Android应用开发所有主要的概念。
推荐理由:仅适用于Android开发者!加快Android开发Android开发工具。1。各种设备信息,如系统属性“,”设置“,生成,屏幕等。2。封装详情(打开详细画面,您可以清除数据,清除现金的意向,卸载应用程序等)
推荐理由:制作一个Android是非常简单的。无需编程技能,也可以做一个应用程序。你所需要的只是一个创新的软件。
推荐理由:AIDE是一个Android Java集成开发环境,可以让你在Android系统内进行Android软件和游戏的开发。它不仅仅是一个编辑器,而是支持编写-编译-调试运行整个周期,开发人员可以在Android手机或者平板机上创建新的项目。
推荐理由:AIDE是一个Android Java集成开发环境,可以让你在Android系统内进行Android软件和游戏的开发。它不仅仅是一个编辑器,而是支持编写-编译-调试运行整个周期,开发人员可以在Android手机或者平板机上创建新的项目。App开发10个常用工具类 - CSDN博客
App开发10个常用工具类
1、日志工具类L.java
import android.util.L
* Log统一管理类
public class Logs {
private Logs() {
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
public static boolean isDebug =// 是否需要打印bug,可以在application的onCreate函数里面初始化
private static final String TAG = &TAG&;
// 下面四个是默认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);
2、Toast统一管理类
import android.content.C
import android.widget.T
* Toast统一管理类
public class Toasts {
private Toasts() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
public static boolean isShow =
* 短时间显示Toast
public static void showShort(Context context, CharSequence message) {
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
* 短时间显示Toast
public static void showShort(Context context, int message) {
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
* 长时间显示Toast
public static void showLong(Context context, CharSequence message) {
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
* 长时间显示Toast
public static void showLong(Context context, int message) {
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
* 自定义显示Toast时间
public static void show(Context context, CharSequence message, int duration) {
if (isShow)
Toast.makeText(context, message, duration).show();
* 自定义显示Toast时间
public static void show(Context context, int message, int duration) {
if (isShow)
Toast.makeText(context, message, duration).show();
3、SharedPreferences封装类SPUtils
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.util.M
import android.content.C
import android.content.SharedP
public class SPUtils{
* 保存在手机里面的文件名
public static final String FILE_NAME = &share_data&;
* 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
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);
editor.putString(key, object.toString());
SharedPreferencesCompat.apply(editor);
* 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
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);
* 移除某个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);
* 清除所有数据
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是否已经存在
public static boolean contains(Context context, String key){
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
return sp.contains(key);
* 返回所有的键值对
public static Map&String, ? & getAll(Context context){
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
return sp.getAll();
* 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
private static class SharedPreferencesCompat{
private static final Method sApplyMethod = findApplyMethod();
* 反射查找apply的方法
@SuppressWarnings({ &unchecked&, &rawtypes& })
private static Method findApplyMethod(){
Class clz = SharedPreferences.Editor.
return clz.getMethod(&apply&);
} catch (NoSuchMethodException e){
* 如果找到则使用apply执行,否则使用commit
public static void apply(SharedPreferences.Editor editor){
if (sApplyMethod != null){
sApplyMethod.invoke(editor);
} catch (IllegalArgumentException e){
} catch (IllegalAccessException e){
} catch (InvocationTargetException e){
对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;
注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit
首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;
所以我们使用apply进行替代,apply异步的进行写入;
但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;
SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~
4、单位转换类 DensityUtils
import android.content.C
import android.util.TypedV
* 常用单位转换的辅助类
public class DensityUtils {
private DensityUtils() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
public static int dp2px(Context context, float dpVal) {
return (int) TypedValue.PLEX_UNIT_DIP, dpVal,
context.getResources().getDisplayMetrics());
public static int sp2px(Context context, float spVal) {
return (int) TypedValue.PLEX_UNIT_SP, spVal,
context.getResources().getDisplayMetrics());
public static float px2dp(Context context, float pxVal) {
final float scale = context.getResources().getDisplayMetrics().
return (pxVal / scale);
public static float px2sp(Context context, float pxVal) {
return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
5、SD卡相关辅助类
SDCardUtils
import java.io.F
import android.os.E
import android.os.StatFs;
* SD卡相关的辅助类
public class SDCardUtils {
private SDCardUtils() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
* 判断SDCard是否可用
public static boolean isSDCardEnable() {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
* 获取SD卡路径
public static String getSDCardPath() {
return Environment.getExternalStorageDirectory().getAbsolutePath() + File.
* 获取SD卡的剩余容量 单位byte
public static long getSDCardAllSize() {
if (isSDCardEnable()) {
StatFs stat = new StatFs(getSDCardPath());
// 获取空闲的数据块的数量
long availableBlocks = (long) stat.getAvailableBlocks() - 4;
// 获取单个数据块的大小(byte)
long freeBlocks = stat.getAvailableBlocks();
return freeBlocks * availableB
* 获取指定路径所在空间的剩余可用容量字节数,单位byte
* @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() * availableB
* 获取系统存储路径
public static String getRootDirectoryPath() {
return Environment.getRootDirectory().getAbsolutePath();
6、屏幕相关辅助类
ScreenUtils
import android.app.A
import android.content.C
import android.graphics.B
import android.graphics.R
import android.util.DisplayM
import android.view.V
import android.view.WindowM
* 获得屏幕相关的辅助类
public class ScreenUtils {
private ScreenUtils() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
* 获得屏幕高度
public static int getScreenWidth(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthP
* 获得屏幕宽度
public static int getScreenHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightP
* 获得状态栏的高度
public static int getStatusHeight(Context context) {
int statusHeight = -1;
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 statusH
* 获取当前屏幕截图,包含状态栏
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 =
bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
view.destroyDrawingCache();
* 获取当前屏幕截图,不包含状态栏
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.
int width = getScreenWidth(activity);
int height = getScreenHeight(activity);
Bitmap bp =
bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);
view.destroyDrawingCache();
7、App相关辅助类
import android.content.C
import android.content.pm.PackageI
import android.content.pm.PackageM
import android.content.pm.PackageManager.NameNotFoundE
* 跟App相关的辅助类
public class AppUtils {
private AppUtils() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
* 获取应用程序名称
public static String getAppName(Context context) {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelR
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
e.printStackTrace();
* [获取应用程序版本名称信息]
* @return 当前应用的版本名称
public static String getVersionName(Context context) {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
return packageInfo.versionN
} catch (NameNotFoundException e) {
e.printStackTrace();
8、软键盘相关辅助类KeyBoardUtils
import android.content.C
import android.view.inputmethod.InputMethodM
import android.widget.EditT
* 打开或关闭软键盘
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、网络相关辅助类 NetUtils
import android.app.A
import ponentN
import android.content.C
import android.content.I
import android.net.ConnectivityM
import android.net.NetworkI
* 跟网络相关的工具类
public class NetUtils {
private NetUtils() {
/** cannot be instantiated **/
throw new UnsupportedOperationException(&cannot be instantiated&);
* 判断网络是否连接
public 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) {
* 判断是否是wifi连接
public static boolean isWifi(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null)
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相关辅助类
import java.io.BufferedR
import java.io.ByteArrayOutputS
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.PrintW
import java.net.HttpURLC
import java.net.URL;
* Http请求的工具类
public class HttpUtils {
private static final int TIMEOUT_IN_MILLIONS = 5000;
public interface CallBack {
void onRequestComplete(String result);
* 异步的Get请求
public static void doGetAsyn(final String urlStr, final CallBack callBack) {
new Thread() {
public void run() {
String result = doGet(urlStr);
if (callBack != null) {
callBack.onRequestComplete(result);
} catch (Exception e) {
e.printStackTrace();
}.start();
* 异步的Post请求
public static void doPostAsyn(final String urlStr, final String params, final CallBack callBack) throws Exception {
new Thread() {
public void run() {
String result = doPost(urlStr, params);
if (callBack != null) {
callBack.onRequestComplete(result);
} catch (Exception e) {
e.printStackTrace();
}.start();
* Get请求,获得返回数据
public static String doGet(String urlStr) {
HttpURLConnection conn =
InputStream is =
ByteArrayOutputStream baos =
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();
throw new RuntimeException(& responseCode is not 200 ... &);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null)
is.close();
} catch (IOException e) {
if (baos != null)
baos.close();
} catch (IOException e) {
conn.disconnect();
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
* @throws Exception
public static String doPost(String url, String param) {
PrintWriter out =
BufferedReader in =
String result = &&;
URL realUrl = new URL(url);
// 打开和URL之间的连接
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty(&accept&, &*/*&);
conn.setRequestProperty(&connection&, &Keep-Alive&);
conn.setRequestMethod(&POST&);
conn.setRequestProperty(&Content-Type&, &application/x-www-form-urlencoded&);
conn.setRequestProperty(&charset&, &utf-8&);
conn.setUseCaches(false);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
if (param != null && !param.trim().equals(&&)) {
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = in.readLine()) != null) {
} catch (Exception e) {
e.printStackTrace();
// 使用finally块来关闭输出流、输入流
if (out != null) {
out.close();
if (in != null) {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
以上是网上找的资料
本文已收录于以下专栏:
相关文章推荐
打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~
在此感谢群里给我发项目中工具类的兄弟/姐妹~
1、日志工具类L.java...
打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~在此感谢群里给我发项目中工具类的兄弟/姐妹~1、日志工具类L.java
出处:http://blog.csdn.net/lmj/article/details/,本文出自【张鸿洋的博客】
打开大家手上的项目,基本都会有一大批的辅助类...
1、日志工具类L.java
[java] view
package com.zhy.  
  
import a...
转载请标明出处:http://blog.csdn.net/lmj/article/details/,本文出自【张鸿洋的博客】
打开大家手上的项目,基本都会有一大...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 android开发常用工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信