
Android--经典案例
老张的Android之旅
Android爱好者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 属性 allowBackup 安全风险浅析 具体操作流程
Android 属性 allowBackup 安全风险浅析 --> https://segmentfault.com/a/11900000025905771、allowBackup安全风险描述Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBacku...原创 2019-08-08 18:13:47 · 463 阅读 · 0 评论 -
Android adb
模拟开机启动:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED原创 2017-06-16 12:32:39 · 654 阅读 · 0 评论 -
java 代理实践
why ?当一个对象不能或者不想直接访问另一个对象时,可以通过一个代理对象来间接访问。为保证客户端使用的透明性,委托对象和代理对象要实现同样的接口。被访问的对象不想暴露全部内容时,可以通过代理去掉不想被访问的内容。动态代理和静态代理优缺点静态代理: 有点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。缺点:(1)代理对象的一个接口只服务于一种类型的对象,如果要代理原创 2017-09-15 19:38:09 · 394 阅读 · 0 评论 -
Okhttp详解(网络)
注意: strting()的使用响应主体上的string()方法对于小文档是方便和高效的。 但是如果响应体很大(大于1 MiB),请避免使用string(),因为它会将整个文档加载到内存中。 在这种情况下,更喜欢将主体作为流处理。response.body().string()仅可调用一次,否则会报错,---Caused by: java.lang.IllegalStateException:原创 2016-12-01 16:04:29 · 1473 阅读 · 0 评论 -
okhttp详解(参数)
注意: okHttp2.7用的是new FormEncodingBuilder(),而OkHttp3.x用的是FormBody.Builder();OkHttp MediaType的使用:public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8");属性:原创 2016-12-01 16:08:12 · 13269 阅读 · 0 评论 -
AndroidStudio生成javadoc文件
在Android Studio中的菜单项中点击Generate JavaDoc 2.如果你的项目中有以“UTF8”做编码的Java文件,那么你在这里必须要带上参数: -encoding utf-8 -charset utf-8 或者会报错误:原创 2017-06-15 11:17:16 · 560 阅读 · 0 评论 -
Android 线程池
线程池 : (ThreadPoolExecutor)参数详解:(1)int corePoolSize => 该线程池中核心线程数最大值(2)int maximumPoolSize => 该线程池中线程总数最大值(3)long keepAliveTime => 该线程池中非核心线程闲置超时时长(4)TimeUnit unit => keepAliveTime 的单位,TimeUnit 是一个枚举类型原创 2017-07-04 14:50:26 · 409 阅读 · 0 评论 -
Rxjava简介
是什么?RxJava 作为一个工具库,使用的就是通用形式的观察者模式。概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和Observer 通过subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。RxJava原创 2017-03-06 12:49:49 · 531 阅读 · 0 评论 -
Android 文件的读取和写入
(1)openFileInput和openFileOutput的使用文件的使用,注意最后要用finally给关闭掉。openFileOutput:(写入文件,如果没有文件名可以创建,这里不需要判断是否有这个文件)---> FileOutputStreamopenFileInput:(读取文件,没有文件名会保存,debug的时候会看到,不影响ui)---> FileInputStream 保存原创 2017-02-15 23:54:47 · 55678 阅读 · 4 评论 -
Fragment 判断当前的fragment是否显示
public Fragment getVisibleFragment(){FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();List<Fragment> fragments = fragmentManager.getFragments();for(Fragment fragment :原创 2017-10-15 21:25:43 · 3779 阅读 · 0 评论 -
Retrofit 如何添加请求头???
okhttp 拦截器添加(两种方式)原创 2018-03-07 15:43:59 · 1468 阅读 · 0 评论 -
常见的滑动冲突场景及解决方案
常见的滑动冲突场景可以简单分为以下三种: 对于场景1, 它的处理规则是:当用户左右滑动时,需要让外部的view拦截点击事件,当用户上下滑动时,需要让内部view拦截点击事件,这个时候我们可以根据他们的特征来解决滑动冲突,具体来说就是:根据滑动时水平滑动还是竖直滑动来判断到底由谁来拦截事件。如何知道滑动谁水平滑动还是竖直滑动呢?我们可以通过两点之间的坐标,依据滑动路径和水平方...原创 2018-03-16 09:58:09 · 586 阅读 · 0 评论 -
滑动冲突问题解决【EditText嵌套在ScrollView】
在某些场景下,需要使用EditText来让用户输入信息。当EditText设置maxLines后,用户输入行数超过maxLines后,只能通过上下滑动来浏览所有文字。但当EditText外层使用ScrollView来让整个界面滑动时,用户触摸EditText区域时不能再显示折叠的文字,而只是滑动了整个srollview。实现时需要注意的是,当EditText框内容并未超过maxLines时,此...原创 2019-03-10 10:59:58 · 705 阅读 · 0 评论 -
Mac pro 系统升级之后出现问题解决办法
Mac pro 系统升级之后出现问题,运行下面命令之后在安装就可以了。rm -Rf /Applications/Android\ Studio.apprm -Rf ~/Library/Preferences/AndroidStudio*rm ~/Library/Preferences/com.google.android.studio.plistrm -Rf ~/Library/Appli...原创 2018-11-19 11:35:06 · 2567 阅读 · 0 评论 -
AndroidStudio 功能使用
shelve changes使用步骤切换分支时候保存:1.点击version control,点击local change,选中default文件,右键选择shelve changes。ok,可以切换了,切换回来,选中shelf,选择文件,选择unshelve changes。...原创 2018-10-22 18:41:37 · 930 阅读 · 0 评论 -
android自定义圆形图片
主要的类:package de.hdodenhof.circleimageview;import edu.njupt.zhb.main.R;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics....原创 2018-10-16 23:10:12 · 503 阅读 · 0 评论 -
RxBus的实现及简单使用
RxJava目前已经很火了,如果你尚未了解请看这里。对于RxJava这里不多做介绍。RxBus并不是一个库,而是一种模式。相信大多数开发者都使用过EventBus,作为事件总线通信库,如果你的项目已经加入RxJava和EventBus,不妨用RxBus代替EventBus,以减少库的依赖。一、添加RxJava和RxAndroid依赖//RxJava and RxAndroidcompile...原创 2018-10-16 22:09:50 · 431 阅读 · 0 评论 -
WeakReference在Android中的使用ImageView设置
非UI线程处理Bitmap(可以替换为其它对象)以下摘自官网class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; //注意用了final private int data = 0; public BitmapWorkerTask(Image...原创 2018-07-16 16:14:15 · 517 阅读 · 0 评论 -
RxBus【使用RxAndroid2.0实现RxBus】
RxBus实现1 添加Gradle://RxAndroidcompile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.4'2 添加RxBus类:public class RxBus {private static volatile RxBus mInstance;pri...原创 2018-07-16 10:52:58 · 630 阅读 · 0 评论 -
RecyclerView自定义分割性
/** * 自定义分割线 */public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; public原创 2017-02-23 15:48:50 · 391 阅读 · 0 评论 -
Handler更新ui的三种方式
1、第一种public class MainActivity extends Activity {private TextView text;private Handler handler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn原创 2017-02-22 20:33:40 · 1019 阅读 · 0 评论 -
android 时间获取以及时间格式化
Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现 现总结如下: 方法一;void getTime1(){ long time=System.currentTimeMillis();//long now = android.os.SystemClock.uptimeMillis(原创 2016-08-11 15:49:16 · 604 阅读 · 0 评论 -
TextInputLayout使用以及EditText自己实现监听
TextInputLayout介绍:首先呢,TextInputLayout是什么?TextInputLayout是一个能够把EditText包裹在当中的一个布局,当输入文字时,它可以把Hint文字飘到EditText的上方,它里面只能包裹一个布局,且只能是EditText,我们可以对其进行判断,当发生错误时,提示错误信息,在文本的下方。实战:1.添加依赖dependencies { comp原创 2016-08-11 14:11:51 · 3281 阅读 · 0 评论 -
java中保留小数的问题解析
java保留两位小数问题:方式一:四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 方式一这个类很好的解决了方式三所带来的问题。保留原创 2016-08-17 20:32:23 · 671 阅读 · 0 评论 -
Android之获取屏幕的尺寸像素及获取状态栏标题栏高度
在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备。今天我就来讲一下怎么得到当前设备的屏幕像素吧: 一、在Activity中:Display display = getWindowManager().getDefaultDisplay();//得到当前屏幕的显示器对象 Point size = new Point();//创原创 2016-08-17 14:02:32 · 722 阅读 · 0 评论 -
数据库存储全方案,详解持久化技术
1.介绍 数据的持久化就是将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不丢失。保存到内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久化之间进行转换。2.Android系统提供了三种方式来简单的实现数据持久化技术:文件存储:(1)Android最基本的一种存储方式,原封不原创 2016-07-30 16:13:50 · 1734 阅读 · 3 评论 -
Android SQLite数据库版本升级原理解析
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下。 一、软件v1.0安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade。二、软件v2.0有2种安装软件情况:1、v1.0 --> v2.0 不走onCreate,走onUpgrade2、原创 2016-08-01 00:12:20 · 640 阅读 · 0 评论 -
Android之获取屏幕的尺寸像素及获取状态栏标题栏高度
在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备。今天我就来讲一下怎么得到当前设备的屏幕像素吧:一、在Activity中:[java] view plain copy print?Display display = getWindowManag原创 2016-07-21 23:39:08 · 2131 阅读 · 0 评论 -
Zxing生成二维码经典解析
1.首先呢,先编译 compile ‘com.google.zxing:core:3.2.1’2、实战public class QRCode {private static int IMAGE_HALFWIDTH = 50;//宽度值,影响中间图片大小/** * 生成二维码,默认大小为500*500 * * @return bitmap */public static Bitmap cr原创 2016-07-20 00:07:51 · 818 阅读 · 0 评论 -
ConcurrentHashMap介绍以及如何使用
一、报错Fatal Exception: java.util.ConcurrentModificationException Raw Textjava.util.HashMap$HashIterator.nextEntry (HashMap.java:787)java.util.HashMap$ValueIterator.next (HashMap.java:819)it.cast.zhan原创 2016-07-14 00:51:11 · 2083 阅读 · 1 评论 -
android 计时器的三种实现(Chronometer、Timer、handler)
目录:1、借助Timer实现2、调用handler.sendMessagedely(Message msg, long delayMillis)3、借助布局Chronometer 1、借助Timer实现(1) 布局文件 1 2 <LinearLayout xmlns:android="http://schemas.androi原创 2016-08-11 17:07:26 · 2949 阅读 · 0 评论 -
TextView显示系统时间(秒针变化)
很长时间没有写博客了,发现自己慢慢的便懒了,不想动,一个呢,是天气比较热,昨天还是39.5°呢,二来最近比较忙,今天有点闲暇时间,就把以前忘记的知识都整理出来,以便以后查阅,好了,说正题吧,我们知道,用System.currentTimeMillis()可以获取系统当前的时间,我们可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间。 我们开启一个原创 2016-08-11 17:09:00 · 1060 阅读 · 0 评论 -
String.format()用法
函数定义:string.format() 第一个参数为字符串格式,后面的参数可以任意多个,用于填充第一个参数中的格式控制符,最后返回完整的格式化后的字符串。String.format()用法1、转换符%s: 字符串类型,如:"ljq"%b: 布尔类型,如:true%d: 整数类型(十进制),如:99%f: 浮点类型,如:99.99%%: 百分比类型,如:%%n: 换行符案例: St原创 2016-08-12 00:39:53 · 798 阅读 · 0 评论 -
Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数
1、首先做成HTML的页面,页面内容格式如下:<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>例如:// 自动加载<iframe src="zhang://my.com/main" style="display:none"><h3>main页面</h3></iframe>// 点击跳转<a href="myscheme://www.or原创 2017-02-17 15:16:23 · 3630 阅读 · 0 评论 -
数据格式化
java.text 包允许通过与特定语言无关的方式格式化文本消息、日期和数值。1. 数据格式化相关类介绍类 功能介绍java.util.* Locale 表示一个语言和区域的特定组合ResourceBundle ListResourceBundlePropertyResourceBundle 获取本地化资源中(可以表现为类和资源文件)的信息Calendar Greg原创 2016-12-17 13:28:22 · 1517 阅读 · 0 评论 -
Android---EventBus详解
注:EventBus在github上的使用https://github.com/greenrobot/EventBus概念: EventBus是一个发布/订阅的事件总线。它可以让两个组件相互通信,但是它们之间并不相互知晓。 EventBus模式,也被称为 Message Bus模式,或者 发布者/订阅者(publisher/subscriber)模式。 事件响应有更多的线程选择,Event原创 2016-12-08 15:04:14 · 482 阅读 · 0 评论 -
Android---自定义异常退出并重启app的使用
自定义异常的退出,这里做的目的是如果自定义异常退出了,我们会得到什么,以及如何异常退出之后重启app,如果你有更好的想法可以一起交流。public class HKApplication extends Application {private List<Activity> activityList = new ArrayList<Activity>();@Overridepublic void原创 2016-12-08 11:19:52 · 3015 阅读 · 0 评论 -
Header的Request部分和Response部分
Requests部分Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Charset浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5Accept-Encoding原创 2016-12-01 16:13:39 · 5864 阅读 · 0 评论 -
WebView的简单使用
WebView加载网页//加载网页链接mWebView.loadUrl("http://www.baidu.com");//加载本地assets目录下的网页mWebView.loadUrl("file:///android_asset/demo.html");WebView基本设置WebSettings settings = mWebView.getSettings();settings.s原创 2016-11-19 15:01:35 · 426 阅读 · 0 评论 -
Socket---简单测试和端口号获取
SocketAddress addr = new InetSocketAddress("172.20.33.70", 1080);Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);Socket socket = new Socket(proxy);InetSocketAddress dest = new InetSocketAddress("bai原创 2016-10-24 20:27:53 · 11099 阅读 · 0 评论