- 博客(43)
- 资源 (22)
- 收藏
- 关注
原创 Android保存layout布局,View为图片,截图分享图片功能
public class ViewUtils { private static final String TAG = "ViewUtils"; /** * 保存view为图片 * * @param activity Activity * @param view View * @param savePat...
2019-05-21 21:03:19
2931
1
原创 Android悬浮可拖动按钮DragFloatActionButton
Android自定义悬浮按钮,按钮可拖动,拖动结束后,按钮可自动靠边吸附。下面是自定义View的详细代码。DragFloatActionButton继续ImageView,通过重写OnTouchEvent事件,实现View的拖动功能,当View被拖拽后,消耗掉事件,不响应点击事件。反之事件正常传递,响应按钮的OnClick事件。左右吸附功能,DensityUtils.dp2px(getCo...
2019-03-01 14:56:22
2899
原创 launcher3增加壁纸到桌面壁纸列表中
在写本文之前,首先推荐一篇详细介绍Launcher3桌面壁纸的博客,博客链接为:Launcher3--壁纸:http://blog.csdn.net/dingfengnupt88/article/details/51833046本文就不详细叙述launcher3添加修改壁纸的原理了,直接提供一个方法,把您喜欢的图片添加到桌面壁纸列表中。/** * 增加自定义桌面壁纸 ...
2018-01-08 16:18:33
1013
原创 Android与H5实现页面交互
一、Android想要与H5页面实现交互,其实就是java与h5的web页面中的JS通讯,从而实现交互效果。博客的主要内容为:androd加载Html页面、android客户端怎样调用H5中的方法、H5如何调用android中的方法。 二、功能实现1、android中通过webview加载显示H5页面,webview既可以加载本地的Html页面,也可以加载一个网址。//设置页面支...
2018-01-05 18:34:01
1965
原创 Android通过命令行签名APK
一、前几天安装一个客户APP时,提示 INSTALL_PARSE_FAILED_NO_CERTIFICATES 错误,无法安装应用。经过查询资料才发现,这个APK文件是没有签名的。如果安装APP时遇到这个问题,可以通过命令去判断APK一否已签名。进入Windows控制台,切换路径到JDK的bin目录下。检验APK文件是否已签名:jarsigner.exe -verify app-relea
2018-01-03 10:39:37
8616
1
原创 Android隐藏虚拟菜单(虚拟按钮导航栏)
方法一:方法参考自http://blog.csdn.net/tian_di_yi_jian/article/details/62425096,方法如下:/** * 隐藏虚拟按键,并且全屏 */public static void hideBottomUIMenu(Activity activity) { //隐藏虚拟按键,并且全屏 if (Build.VERSION.S...
2017-10-14 11:27:40
1914
原创 Android监听软键盘状态
监听软键盘隐藏或显示,代码如下:/** * 监听软键盘状态 */private void listenerInput() { final LinearLayout ll_main = (LinearLayout) findViewById(R.id.activity_main); ll_main.getViewTreeObserver().addOnGlobalLay...
2017-10-14 11:21:05
754
原创 修改Laucnher3桌面应用名字
前段时间做的一个Laucnher应用,因为可以在IconCache中修改应用图标。现在有需求需要修改应用的名字,但是在IconCache中修改已知都没法实现。跟踪代码发现每次加载桌面时,都会执行BubbleTextView类中的applyFromShortcutInfo方法去设置应用的图标和名字。测试后发现在该方法中根据应用包名去设置应用的名字是可行的。public void apply...
2017-09-19 11:47:52
711
原创 FragmentTabHost、TabHost外接刷卡器,键盘等设备输入内容时,与EditText争抢焦点导致输入异常
当你使用FragmentTabHost或TabHost去设置完成底部导航栏UI设计时,方便了布局的实现,但是在外接键盘,或刷卡器等设备输入内容时,会出现EditText不能获取焦点,FragmentTabHost页面被虚拟键盘顶上去了。查看资料后发现是FragmentTabHost控件抢夺了EditText的焦点。FragmentTabHost继承于TabHost,其外接键盘输入异常问题,其实...
2017-08-10 14:36:21
711
转载 java设计模式之单例模式
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-08-03 18:36:07
370
原创 Java线程池
先写一个线程池工具类,暴露两个方法,一个是执行任务,另一个是取消执行任务。执行任务时,使用java的线程池类去管理线程。 public class ThreadPoolProxy { private ThreadPoolExecutor pool; private int corePoolSize; private int maxi...
2017-08-03 18:14:00
481
原创 android制作sdk,通过SDK调用另一个应用的方法
为了让其他人可以调用我们应用的方法。我们可以通过通过JNI实现跨进程通讯。也可以用java的反射调用其他APP中的方法。但是你需要知道其他APP得包名,类名,或获取他的JNI文件。 通过制作SDK(即是一个jar包),在其他项目中,只要导入这个jar包,就可以很快捷的使用sdk中的方法调用目标应用的方法。假如提供给别人,别人也不用知道你应用的结构,原理...
2017-08-01 19:42:37
5272
原创 Android Studio创建无图标应用 Default Activity not fount
在Android Studio开发,如果你想创建一个没有没有应用图标的应用,你会发现,修改category修改为default,项目中没有一个Activity是Laucnher的话,没法运行,直接报Default Activity not fount 的错误。无法运行。<activity android:name=".MainActivity"> <intent-f...
2017-07-29 09:15:39
1061
原创 Android Launcher3修改长按屏幕空白处进入OverviewMode模式,进入OverviewMode模式点击Home无法复原的bug
如果想控制用户长按空白处,不进入OverviewMode模式,只需修改Laucnher类中的onLongClick方法。长按workspace的空白处进入OverviewMode模式,如果不想进入,注释掉enterOverviewMode这行代码 if(v instanceof Workspace){ if (!mWorkspace.isInOverviewMode())...
2017-07-28 18:55:25
2318
原创 Android Launcher3修改应用图标,隐藏应用图标
Launcher运行时,会执行LauncherModel的loadAllApps方法,加载所有应用的详细信息。这时候,如果你想过滤掉你不想显示的应用,你可以修改源码,把应用过滤掉。我这里的示列是Launcher第一次加载时,会把Android的键盘应用添加到主页面。所以我需要把该应用隐藏,不显示在Launcher桌面。这里贴LoadAllApps的部分代码。// Create t...
2017-07-28 18:01:38
3092
原创 Android Launcher3 禁止用户拖动图标创建文件夹,控制拖动图标到另一个图标时的动画效果
禁止用户拖拽应用图标创建文件夹,需要在Workspace中的onDrop()方法的createUserFolderIfNecessary方法注释掉。这样就不再创建文件夹。 // If the item being dropped is a shortcut and the nearest drop // cell also contains a shortcut, then crea...
2017-07-28 17:37:12
1749
1
原创 Android Laucnher3 拖拽应用图标阴影投放位置
要想实现拖拽拖到到任何地方,阴影都投放在Workspace中,只需修改Workspace方法中的onDragOver方法,该方法在拖拽中会不断调用。通过下面的代码可以看到,当判断用户拖拽图标到hostseat位置中,我们把图标阴影投放在workspace上。//确定我们是否拖过了侧页 if (workspaceInModalState()) { ...
2017-07-28 16:49:05
611
原创 Android Launcher3安装应用后,控制应用图标显示位置
最近在搞Android的Launcher开发,去掉应用列表后,每次安装应用应用图标都会放在第二页。查看源码后,发现安装应用会走LauncherModel的addAndBindAddedWorkspaceApps方法,添加绑定一个应用图标到workspace中。public void addAndBindAddedWorkspaceApps(final Context context, ...
2017-07-28 16:05:39
3209
原创 Android Launcher3修改行数,列数,布局等;隐藏HostSeat,使用户无法拖拽应用图标到Hotseat
修改Launcher的行列数比较简单,在DeviceProfile类的构造方法中,可以修改行数,列数等。但是更严格的话需要到DynamicGrid方法中,调用DeviceProfile该方法时根据屏幕大小,动态控制行列数。图标大小等也可以在这里更改。如果需要实现隐藏hostseat,就把hostseat的图标设置为0,但是会有一个地方报错,到时候可以做一下错误处理就可以了。当hostseat的...
2017-07-28 15:28:30
4537
原创 Android Launcher3 去掉应用列表后,在系统桌面拖动应用图标卸载应用
隐藏掉应用列表后,发现在Launcher的WorkSpace中不管怎样都市无法卸载应用的,只能删除图标。研究发现在DeleteDropTarget这个类中可以控制拖拽应用图标卸载应用。1、修改代码,使用户每次拖动图标显示卸载选项,而不是显示删除应用图标的选项 @Override public void onDragStart(DragSource source, Object i...
2017-07-28 15:00:24
3431
原创 Android Launcher3去掉全部应用列表
为了隐藏应用程序列表,把所有应用的图标都显示在了桌面上,查看了很多网上的资料,都是说只要把AppsCustomizePagedView.Java下的DISABLE_ALL_APPS值改为true就可以了,但是我发现我那个版本源码找不到这个值去修改的。 换一种角度去思考后,我查询那些地方使用到DISABLE_ALL_APPS这个常量,发现我的源码控制是否添加应用列表的方法是在Launcher...
2017-07-28 13:59:31
3305
原创 java倒计时,定时器
一、Java倒计时,使用timer实现/** * 倒计时 * * @param min 倒计时间(分钟) */public void CountDown(int min) { //开始时间 long start = System.currentTimeMillis(); //结束时间 final long end = start + min * 6...
2017-04-11 11:15:30
11760
1
原创 The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
Eclipse新建类报错: Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructorThe type java.lang.Object cannot be resolved. It is indirectly reference
2017-04-08 11:03:37
413
原创 Android判断网络连接状态,判断网络连接方式,获取IP地址
一、判断网络连接状态 /** * 检测网络是否连接 * * @return */ public static boolean checkNetworkState(Context context) { boolean flag = false; //得到网络连接信息 ConnectivityMa
2017-04-07 23:15:53
1229
原创 彩色照片转化为黑白照片
/** * 将彩色图转换为纯黑白二色 * * @param bmp 位图 * @return 返回转换好的位图 */ public static Bitmap convertToBlackWhite(Bitmap bmp) { int width = bmp.getWidth(); // 获取位图的宽 int
2017-04-07 23:07:40
762
原创 判断字符串是否为数字
/** * 判断字符串是否为数字 * * 正则表达式判断 * * @param str 字符串 * @return boolean */ public static boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0
2017-04-04 16:41:28
567
原创 字符串与16进制字符串相互转化
一、ASCII字符串转换为16进制字符串 /** * @param s 字符串 * @return 16进制字符串 * @desc 字符串转换为16进制字符串 */ public static String toHexString(String s) { String str = ""; for (i
2017-04-04 16:18:09
2101
原创 二进制Binary、十进制Decimal、十六进制Hex、字节byte,位bit的转化
一、十进制数字转化为无符号的2进制字符串String Binary = Integer.toBinaryString(88); 二、进制字符串转化为十进制数字Integer Decimal = Integer.valueOf("10001000", 2);三、十六进制字符串转化为十进制数字String hexString = Integer.toHexString(136);四、
2017-04-04 09:12:40
3250
原创 SharedPreferences的工具类,调用setParam就能保存String, Integer, Boolean, Float, Long类型的参数 同样调用getParam就能获取相应的值
一、构造方法传入参数public SharedPreferencesUtils(String FILE_NAME , Context context) { this.FILE_NAME = FILE_NAME; this.context=context;}二、保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法public void setParam(Str
2017-04-03 20:48:25
873
原创 Android创建桌面快捷方式
一、创建快捷方式的代码 /** * 创建快捷方式 * * @param name 快捷方式的名字 * @param resourceId 快捷方式的图标 * @param phone 电话号码 */ public void createShortCut(String name, int resourceId, Str
2016-12-30 09:29:57
517
原创 Android启动远程服务
一、在服务注册时添加服务的Action, 二、启动远程服务,Action必须和前面注册的Action一样 public void click(View v){ //启动远程服务 Intent intent = new Intent(); intent.setAction("com.greetty.remote"); startServi
2016-12-29 14:03:32
1372
原创 Android的AIDL进程间通信
1、把远程服务的方法抽取成一个单独的接口java文件package com.greetty.remoteservice;interface PublicBusiness { void qianXian();}2、把接口java文件的后缀名改成aidl3、在自动生成的PublicBusiness.java文件中,有一个静态抽象类Stub,它已经继承了binder类,实现了publicB
2016-12-29 13:53:03
297
原创 Android官方下拉刷新控件SwipeRefreshLayout+ListView 介绍
一、Activity代码,详细的注释看代码package git.greetty.com.swiperefresh;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import android.app.Activity;import android.graphics.Color
2016-12-23 10:16:00
551
原创 解决RecyclerView复用,导致Item混乱问题,checkbox也类似此做法
一、在onBindViewHolder方法中给要操作的控件setTagholderTwo.item_ll_root.setTag(position);二、在onBindViewHolder方法中,记录该控件的状态// 显示隐藏词义 holderTwo.item_ll_root.setOnClickListener(new View.OnClickListener() ...
2016-12-22 12:43:35
8383
原创 RecyclerView加载两套布局
一、想要实现加载两套不同的布局,只需在getItemViewType方法中返回不同的type,就可以在onCreateViewHolder方 法中根据不同的type加载不同的布局,不同的布局,也同时也要实现不同的ViewHolder。onBindViewHolder方法也就可以根据不同的个布局进行不同的操作/** * 适配器 */ class MyAda
2016-12-22 12:23:28
1368
原创 Java比较计算日期,日期排序
一、比较一个日期和今天相差多少天/** * 计算相差日期 * * @param date 传入年月日 * @return 天数 int */public static int compareToday(String date) { long time = 0; SimpleDateFormat df = new SimpleDateFormat("yyyy-
2016-12-22 11:59:54
938
原创 AsyncTask异步执行耗时操作
AsyncTask的具体用法详情可以看代码注释一、Activity代码package git.greetty.com.async;import android.os.AsyncTask;import android.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.os.
2016-12-20 16:21:52
1095
原创 xutils和Gson解析Json数据
一、编写实体类,实体类字段名字必须和服务器返回的字段名一致,可以不写完每一个Json字段,根据需要自己编写实体类字段/** * * 字段名字必须和服务器返回的字段名一致, 方便gson解析 * */public class NewsData { public int retcode; public ArrayList<NewsMenuData> d...
2016-12-20 10:02:26
939
原创 两个Activity之间传递List<T>数据
一、List<T>的Bean对象,Bean类实现Serializable接口public class WordReview implements Serializable { }二、Activity跳转传递参数List<WordReview> wordReviews = new ArrayList<>();Intent intent ...
2016-12-19 13:22:26
5600
1
Recorder.zip
2019-09-27
Android静默安装Demo
2018-10-18
Swing Datepicker时间选择器jar包
2018-03-19
httpclient-4.5所需所有jar包
2017-12-25
Apache和PHP压缩包,解压配置可用
2017-09-15
解决配置PHP环境错误,VC11运行库安装包
2017-09-15
VC11运行库,配置PHP环境
2017-09-15
rxjava+retrofit2+okhttp相关ja下载
2017-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人