![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
燕歆波
熟悉的陌生人
展开
-
对未签名apk进行签名
作者:燕歆波腾讯对apk加固后需要自己进行重新签名jarsigner.exe进行重新签名打开JDK安装目录,在bin目录下打开cmdjarsigner -verbose -keystore [签名文件路径] -signedjar [签名后的apk文件路径] [未签名的apk文件路径] [证书别名]参数:-verbose 签名时输出详细信息-keystore 指定签名文件的存放路径-signedjar 指定签名后的apk文件存放路径例如:jarsigner -verbose -ke.原创 2021-08-25 08:05:30 · 331 阅读 · 0 评论 -
Kotlin ?.let 、!! 、?:等运算符的使用
作者:燕歆波导读:使用Kotlin开发,人性化提示 ?.let等语法处理1、?.leta?.let{it} 的意思:当a为null时,什么都不执行当a不为null时,执行大括号里的语句,意味着it肯定不为null上面的语法可以理解为:if(a == null){ println("什么都不执行")}else{ println("执行")}2、!!在使用这句代码的时候如果不在outFilePath后加上!!,kotlin会在使用mSrcFilePath的地方提示风险,会.原创 2021-08-04 17:12:37 · 3100 阅读 · 0 评论 -
Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
1.解决思路 当我们使用ListView嵌套ViewPager时,会出现滑动事件的冲突,我们都知道,Viewpager自己也有滑动的功能,ListView也有滑动的功能,当我们手指放在ViewPager上来达到滑动ListView的目的时,就会发现,这种冲突问题出现了,因为我们根本无法滑动ListView,为什么呢,因为ViewPager是放在ListView上面的,翻译 2016-09-20 13:46:22 · 4496 阅读 · 0 评论 -
Android版本升级时,判断版本号代码
public static int compareVersion(String version1, String version2) { if (version1.equals(version2)) { return 0; } String[] version1Array = version1.split("\\."); String[] vers翻译 2016-09-20 13:50:42 · 1019 阅读 · 0 评论 -
Android在选择系统相册图片时,返回的图片地址不同导致程序崩溃!!!
1.简介 在做选择系统图片的时候,碰到了一个情况,由于不同的android手机,图片的路径很多都不同,我运行在奇虎手机上的时候,出现了崩溃,下面是我打开系统相册的方法:请注意红色字体:Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CO原创 2016-09-20 13:52:15 · 4031 阅读 · 0 评论 -
Android中解决复写ListView时出现OnScollListener无法监听,这时如果实现标题栏渐变色的话,应该将计算滚动距离的方法,写在不断调用的回调中。
计算listView滑动距离的方法:public int getScroll() { View c = this.getChildAt(0); if (c == null) { return 0; } int firstVisiblePosition = this.getFirstVisiblePosition(); int top原创 2016-09-20 15:31:52 · 763 阅读 · 0 评论 -
Android使用DownLoadManager(下载管理器)更新版本
使用DownLoadManager进行下载管理,不再让页面跳转到网页进行下载,而是使用通知栏提示下载进度!!!1.介绍 DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用来请求一个原创 2016-09-21 19:16:40 · 4782 阅读 · 1 评论 -
Android中TextView长按复制时,屏幕顶部出现粘贴等选项的布局,这个布局占了顶部的位置,如何让这个布局浮动在顶部??
1、在Activity使用setContentView方法之前,调用requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);2、如果是继承ActionBarActivity,则调用以下方法 supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_MODE_OVERLAY);翻译 2016-09-28 11:12:46 · 1604 阅读 · 0 评论 -
UIL doesn't support scheme(protocol) by default You should implement this support yourself
android在显示网络图片时,如果直接引用图片地址,由于图片的地址格式的原因,很可能加载出错,最近在项目中遇到了这个错误,在电脑上显示正常,但是加载到手机上就不行了,从服务器获取到的地址是这样的:http://61.177.38.106:20009/attachments\\config/indexIcon\\20161025\v2_origin_cd5f7a6d-5764-46f7-b原创 2016-10-25 16:31:28 · 1964 阅读 · 0 评论 -
SwipeRefreshLayout设置刷新圆圈距离顶部的距离
swipe_refresh.setProgressViewOffset(true, 0, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()));只需要一句话就改变了距离顶部的距离! //看看源码public void setP翻译 2016-10-25 18:30:32 · 3708 阅读 · 0 评论 -
获取listView上滑距离,根据这个距离改变标题栏颜色
1.继承ListView2.重写onScrollchanged方法,在这个方法中调接口,在主页面实现接口3.得到liostView的滑动距离,不断在onScrollchanged方法中调用下面是代码 @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) {原创 2016-10-26 17:32:52 · 1326 阅读 · 0 评论 -
listView实现下拉刷新,类似于微信朋友圈下拉刷新效果
package com.telehot.quan.ui.view;import java.text.SimpleDateFormat;import java.util.Date;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import翻译 2016-10-27 12:20:52 · 1353 阅读 · 0 评论 -
Android注解框架(ButterKnife的简单使用)
ButterKnife框架可以把人们从繁琐的findViewById和setOnClickListener中解放出来,它采用依赖注入的方式,可以通过注解,使layout文件中的View和代码中的对象自动绑定。浅显的讲,就是我们不用再频繁的去写很多很多的findViewById和setOnClickListener等固定的语法,而是通过这个注解自动帮我们绑定生成.我们可以看一下butterKni原创 2017-02-08 13:58:46 · 580 阅读 · 0 评论 -
Android设置EditText输入字数限制的两种方法!
1.第一种(在代码中限制); android:id="@+id/et_message" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:hint="@string/percenteractivity_mes翻译 2017-02-08 14:09:27 · 3671 阅读 · 0 评论 -
Android解决:View.setTag(key,object)异常:The key must be an application-specific resource id.
一.简介 setTag可以为控件增加一些附加信息,他是android中很有用的一个方法,setTag有两个方法,1.setTag(Object tag)方法比较简单,只需要放入你要设置的信息即可.2.setTag(int key,Object tag);如果你要添加的不是单独的一种信息,那么就要用第二种方法,第一个参数是key值,在获取对应信息的时候,需要以key来获取,第二参数和第一种一样,之所原创 2017-02-08 14:12:56 · 13092 阅读 · 0 评论 -
Android设置富文本!
1.简介:最近在使用textView做换行显示的时候,发现,textView前面如果有其他控件的话,他的第二行的起始位置就改变了,我要做的就是如何让textView在换行时都从头开始,一开始并不知道富文本,后来问ios, 听他们说他们那边有一个富文本的东西,于是,我搜索了一下android的富文本显示,找到了解决方法.2.解决方法android使用html语言实现了富文本功能,代码如下://处理富翻译 2017-02-08 14:16:11 · 1325 阅读 · 0 评论 -
文章标题
计算两个经纬度坐标之间的距离.public class CalculateDistance { private static final double EARTH_RADIUS = 6378137.0; public static void main(String[] args) { double lo1 = 108.90, la1 = 34.1;// 第一个经纬度转载 2017-02-23 09:41:24 · 252 阅读 · 0 评论 -
Android蓝牙扫描和连接!
最近在做蓝牙签到功能时,了解了蓝牙的一部分知识,虽然不够深入,但是感觉良好,他的整体思路如下: 在指定时间内,打开蓝牙,扫描周边蓝牙信号,如果有指定的蓝牙,则由用户确认连接蓝牙,最终签到成功. 首先,我们先写一个工具类,来判断当前时间是否在指定时间之内:/** * 判断时间是否在时间段内 * * @param date * 当前时间原创 2017-02-23 11:35:49 · 12074 阅读 · 2 评论 -
Android使用广播实现跨进程通信
Android使用广播实现跨进程通信 作者:燕潇洒 导读: 如果您还不知道广播的基本使用,请参阅: 广播的动态注册和静态注册以及系统广播的使用! Android提供了四种进程间通讯的方式.(1)、Activity(页面). (2)、ContentProvider(内容提供者).(3)、BroadCastReciever(广播).(4)service(服务).我们调用拨打电话功能时,其实原创 2017-03-01 18:28:40 · 6308 阅读 · 2 评论 -
广播的动态注册和静态注册以及系统广播的使用!
广播的动态注册和静态注册以及系统广播的使用! 作者:燕潇洒 导读:前面在说使用广播实现进程间的被动通信的时候,没有考虑到大家是否懂得如何发送广播,在http://blog.csdn.net/yanxiaosa/article/details/59116262这篇博客中,知识稍微说一下广播的简单发送和接收,今天,来给大家说一下,广播的注册(动态和静态)、发送和接收;Android广播机原创 2017-03-03 10:08:30 · 4353 阅读 · 0 评论 -
使用反射在泛型为Integer的ArrayList中添加String类型的数据
昨天刚刚回顾了一下曾经了解过但是还是不懂的反射,看到了一个有意思的代码,如何在泛型为Integer的ArrayList中添加一个String类型的数据呢?private void addStringToIntList() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {翻译 2017-02-24 11:02:45 · 4407 阅读 · 0 评论 -
使用反射操作类的私有属性(Field)和私有方法(Method)
刚刚了解了反射,看到了使用反射操作类的私有属性,在操作私有变量时,需要使用Field类,我们来看一个例子: /** * field访问私有变量 * @throws Exception */ private void useFeildOfReflect() throws Exception { //获取类的class对象 Class<?> c原创 2017-02-24 13:29:00 · 2237 阅读 · 0 评论 -
UI更新demo
自己闲暇之余随便写的demo(更新textView),布局里面只有一个按钮和TextView:public class LooperHandlerActivity extends Activity { //更新UI private Handler mHandler; private Button mBtn; private TextView tv_UI; @Overr转载 2017-03-09 10:00:59 · 287 阅读 · 0 评论 -
Service后台播放音乐
Service(服务),是没有前台界面的,service并不依赖于UI,因为service只能在后台运行。 Service同样运行在主线程中,所以Service中不能有耗时的操作(这里指的是service不是IntentService),如果有耗时操作,我们可以像Activity那样,重新开个线程进行操作. Service的启动方式有两种:startService和bindService;st翻译 2017-03-09 17:11:54 · 1082 阅读 · 0 评论 -
Android跨包访问SharedPreferences空指针!
今天在做获取SharedPreferences存储的字符串的时候,项目报出了空指针异常,定位后,发现是SharedPreferences调用get方法获取的时候,报错了,可是为什么呢?想了很久,突然感觉应该是,我调用了另一个包下面的工具类。持着怀疑的态度,我去百度了…. 经过百度,发现果然是跨包访问出现的结果,可是我依赖了啊。 百度上说,在跨包访问SharedPreferences时,访问权限不原创 2017-03-20 12:47:22 · 1860 阅读 · 3 评论 -
Android使用aapt工具查看apk详细信息(包名,权限),在一个app中打开另一个app(微信为例))
作者:燕潇洒 导读:在只有apk安装包的情况下,查看apk安装包的包名,权限等信息。以* 测试包apk为例,打开cmd,切换到aapt目录下,此目录在sdk的build-tools目录下面,我的目录在:D:\android\sdk\AndroidSDK\build-tools\25.0.2切换到aapt目录下后:输入以下命令行:aapt dump badging D:/app-flavo原创 2017-03-07 10:46:27 · 4934 阅读 · 0 评论 -
根据图片Uri获取图片的String地址
/** * 得到图片的uri地址 * * @param uri * @return */ public static String getRealFilePath(final Context context, final Uri uri) { if (null == uri) return null; fina转载 2017-03-07 11:10:00 · 935 阅读 · 0 评论 -
图片裁剪工具(compile 'com.soundcloud.android.crop:lib_crop:1.0.0')的使用!
打开app的gradle,在dependencies节点下添加:compile 'com.soundcloud.android.crop:lib_crop:1.0.0'然后,我们在选择图片返回数据后,获取数据,然后调用图片裁剪工具的方法,调用的时候,我们需要在清单文件中注册裁剪功能所在的页面:<activity android:name="com.soundcloud.android.crop.Cr翻译 2017-03-07 11:14:53 · 4147 阅读 · 0 评论 -
各式各样的图片三方框架
在app的gradle中引入下面的地址:compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar'引用成功后就可以正常使用了: <com.github.siyamed.shapeimageview.HeartImageView android:src="@mipmap/timg" app:siBorderW翻译 2017-03-07 11:21:14 · 658 阅读 · 0 评论 -
使用applicationIdSuffix打多个包
将下面的配置放在app的gradle的android节点下,与defaultConfig节点同等级。里面配置了多个版本; buildTypes { release { // 这里是在 applicationId 中添加了一个后缀。所以『.』要加上// applicationIdSuffix ".release" mi翻译 2017-03-07 11:47:09 · 2530 阅读 · 0 评论 -
Android标题栏的封装TitleBar
在开发中,如果我们不想要系统的标题栏,而是想要自己定义状态栏的话,就需要自定义布局,或者,每写一个activity,其对应的页面就要写一次标题栏的布局,那么,而且还要在activity中设置标题栏的值。 那为什么不把设置值封装一下,动态的去设置标题栏上的内容。 标题栏无非就是返回按钮,标题,还有右侧的选项,那么,我们先来写一个布局,高度我们给60dp,里面有什么呢: 1. 返回按钮 2. 返回翻译 2017-04-07 14:46:36 · 3369 阅读 · 0 评论 -
Android继承自定义标题栏BaseTitleBarActivity
上一次讲了,封装标题栏,后来想想,那样封装还是很麻烦,因为,每个页面都需要添加标题栏的布局,如果一个类不需要,但是后来又需要了,那么,导致整个页面都要手动调整。 今天,我把标题栏封装到一个activity中,这个activity作为一个基类,只要继承这个类,就可以拥有设置标题栏属性的功能,如果不需要,只需要一句代码就可以去掉。 上次我们说到,一个标题栏无非有这些东西:左侧返回箭头和文本、中间标题原创 2017-04-07 15:34:12 · 1173 阅读 · 0 评论 -
Android解决Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException:异常
今天在写代码时,ios端告诉我说,默认头像需要修改,于是给了我一张经过压缩的图片,这个图片是png格式的,可是没压缩之前是jpg格式的,我把图片导入mipmap中然后运行,直接就爆出了Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException:这个错误,一开始,并没有在意,我就cle翻译 2017-03-31 13:12:38 · 14670 阅读 · 1 评论 -
Android 中TabLayout如何设置字体大小!
在使用disign包中的TabLayout时,发现并没有设置tab文字大小的属性,只有一个tabTextAppearance属性,官方也没有给出设置Tablayout文字大小的方法,那么如何设置tab标签的字体大小呢? 百度一下,搜索关键字TabLayout设置字体大小,看了一下,很多都是使用tabTextAppearance来设置字体大小: <style name="TabLayoutTe原创 2017-04-10 13:58:45 · 9245 阅读 · 0 评论 -
TabLayout关联ViewPager遇到的问题!
在使用TabLayout的时候,发现很方便的一点,就是不用再手写监听,让tabLayout和ViewPager关联起来了,就像原来使用TabHost或者TabWedget一样,还要自己写关联的代码。高兴归高兴,在使用过程中还是发现了比较头疼的一点。 使用TabLayout的人都知道,让Tablayout和ViewPager关联只需要一个方法,那就是:setupWithViewPager();正是由翻译 2017-04-10 14:36:11 · 2378 阅读 · 0 评论 -
集成Mob短信,提交验证码成功的回调方法在子线程
在集成mob短信时,需要在提交验证码成功的event中更改ui,下面是回调中的操作,EventHandler eh = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RE原创 2017-04-01 10:49:55 · 1382 阅读 · 0 评论 -
Android使用Gradle命令动态修改BASE_URL(测试/正式环境地址)完成打包,不需要修改代码
通常,我们的应用都会有开发环境、测试环境等,现在我分别想要一个测试环境的包和一个线上环境的包,我不想在代码中去修改我的BASE_URL(各个环境的地址url)来达到这个需求,那么,只能使用gradle配置了。 在一般情况下,我们都会写一个类来存放请求的url地址,比如:public class Contons { public static final String BASE_URL =原创 2017-03-14 18:01:38 · 4778 阅读 · 0 评论 -
android自定义弹出菜单
作者:燕潇洒 导读:最近在项目中遇到在标题栏右侧按钮点击时,弹出一个顶部是三角形的菜单,可是ui并没有给图,于是,我只能自己画一个了.先看一下效果图: 下面说一下实现过程吧: 创建类继承View类,重写onDraw方法,所有的代码,都在onDraw方法中,我们需要一步一步的去画出来: 在这个过程中,我用到了paint(画笔),Path(路径类),和Canvas(画布); ,初始化我们原创 2017-04-19 13:34:49 · 2348 阅读 · 2 评论 -
H5 Canvas相关小知识点!
在使用Canvas之前,一定要获取Canvas对象,并设置操作环境:var canvas = document.getElementById("myCanvas");//目前Canvas的操作环境只有2d,没有3d,或者其他tempContext = canvas.getContext("2d"); 1.将图片绘制到画布上:var img = new Image();//获取原创 2017-04-20 17:44:46 · 578 阅读 · 0 评论 -
Android使用系统方法实现分享到QQ和微信!
作者:燕潇洒 导读:在过需求时,发现有分享到qq和微信的功能,百度之后,发现android自带分享到qq和微信的功能!public class AndroidShare { /** * 上下文 */ private Context context; /** * 文本类型 * */ public static int转载 2017-05-23 18:16:24 · 8652 阅读 · 3 评论