自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Flutter - Stream 浅析

StreamStream 是 Dart 提供的一种数据流订阅管理的"工具",Stream 可以接收任何对象,接收的对象通过 StreamController 的 sink 进行添加,然后通过 StreamController 发送给 Stream,通过 listen 进行监听,listen 会返回一个 StreamSubscription 对象,StreamSubscription 可以操作对数据流的监听,例如 pause,resume,cancel 等分类Single-subscription

2022-05-18 12:40:59 1109

原创 Flutter - Image 组件分析

Flutter 中提供了Widget 组件供开发者解决日常中关于图片相关的需求,其中包含 Image.file() 读取用户内存中图片,Image.asset() 加载程序包含的图片资源,Image.network() 用于网络图片的加载,我们主要通过 Image 对于网络图片加载的实现来初步了解 Image 组件的原理。首先从构造函数开始:Image.network( String src, { Key? key, double scale = 1.0, ......

2022-05-18 11:25:08 1517

原创 Flutter - 自定义 Tab 样式

import 'dart:math';import 'package:flutter/material.dart';import 'package:flutter_swiper_plus/flutter_swiper_plus.dart';void main() { runApp(const MyApp());}class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @o.

2022-05-16 16:18:57 1337

原创 Jenkins 打包

安装 Jenkins下载Jenkins 最新版本:https://www.jenkins.io/download/jenkins项目有两条发布线,分别是LTS长期支持版(或稳定版)和每周更新版(最新版)。建议选择LTS长期支持版,下载通用java项目war包;另外需要安装 jdk ,这里不赘述;在dos命令行运行命令解压war包:java -jar jenkins.war (默认情况下端口是8080,如果要使用其他端口启动,可以通过命令行”java –j...

2022-03-25 17:53:22 11853

原创 Android 多渠道包

build.gradleandroid{ ... flavorDimensions 'region', 'market' productFlavors { googleplay { dimension 'region' manifestPlaceholders = [UMENG_CHANNEL_VALUE: "googleplayMarket"] ndk {

2022-03-24 19:48:12 2729

原创 ViewFlipper的使用

<LinearLayout android:id="@+id/edit_layout" android:layout_width="180dp" android:layout_height="wrap_content" android:background="@drawable/fillet" android:padding="@dimen/dp_10" ...

2020-06-15 12:17:41 418

原创 Retrofit 自定义 GsonConverterFactory

在项目中 网络请求中, 后台返回的数据有一个统一样式: /** * message : "success" * result : {} * status : 1 * accessToken : "" */其中 status == 1 时,才是请求正确, 我们再来根据具体接口来解析 result 对象, 获取我们想要的数据...

2020-02-19 11:51:49 4080

原创 Flutter 不利用 BuildContext 跳转页面

趁着在家办公这期间, 梳理一下之前项目中碰到的问题; 需求: 在网络请求中, 碰上token失效的时候需要跳转回登陆页面,重新登陆. 思路: 在网络请求中, 加入拦截器, 碰上token失效的问题, 跳转页面; 代码:Navigator.pushAndRemoveUntil(context, new MaterialPage...

2020-02-14 17:59:06 674

原创 Flutter 启动白屏

Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长.然后这个白屏是可以控制的,在Android代码中的 style.xml中有这样一段代码:<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> ...

2019-05-20 14:45:43 4848

原创 Flutter中自定义视图实现柱形图的绘制

主要通过这个博文学习通过Flutter自定义视图来绘制柱形图.这年头没个图片都不好意思发博客了:在柱形图上方显示具体数值,x轴下方显示具体日期,忽略上方的日月年的tabBar.首先介绍几个主要的方法:canvas.drawRect(Rect rect, Paint paint); //绘制矩形canvas.drawLine(Offset p1, Offset p2, ...

2019-04-22 01:02:05 3166 5

原创 配置自己的apk为系统应用

最近开发中需要将自己开发的应用定义为系统应用,以调用一些@hide的系统api首先我是通过在android源代码下编译的方式,在android.mk中部分定义使用平台证书:LOCAL_CERTIFICATE := platform与之在system/priv-app目录下LOCAL_PRIVILEGED_MODULE := true再然后在AndroidManifest.x...

2019-03-15 11:43:17 1536

原创 URI 中的 getSchemeSpecificPart() 方法

首先是因为碰到一个坑: final Uri data = intent.getData(); if (data != null &amp;&amp; CallUtil.SCHEME_TEL.equals(data.getScheme())) { String number = data.getSchemeSpecificPart(); if (!TextUtils.isEm...

2018-12-28 16:47:10 2921

原创 Android Viewpager实现真正无限循环的轮播图

在网上找了很多viewpager实现图片轮播的,但是大多数通过以下方式在PagerAdapter的getCount()返回一个无限大的数,来实现 伪无限 @Override public int getCount() { return Integer.MAX_VALUE;//返回一个无限大的值,可以 无限循环 }虽然通过这种方式是能达到效果,但是从严...

2018-11-14 19:54:07 14843 2

原创 隐式Intent与显示Intent的区别

显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用Intent.setComponent()、Intent.setClassName()或Intent.setClass()方法或者在new Intent(A.this,B.class)指明需要转向到的Activity,显式意图明确指定了要激活的组件是哪个组件,一般是在应用程序内部使用。 I...

2018-08-19 17:51:08 13746

转载 OkHttp 基础解析

在讲解OkHttp使用之前, 首先了解下我们Http请求和响应都有哪些部分组成.http请求所以一个类库要完成一个http请求, 需要包含 请求方法, 请求地址, 请求协议, 请求头, 请求体这五部分. 这些都在okhttp3.Request的类中有体现, 这个类正是代表http请求的类. 看下图:其中HttpUrl类代表请求地址, String method代表请求方法, Headers代表请求...

2018-06-17 20:38:24 2812

转载 Retrofit 基础解析

    首先呢,刚开始接触retrofit,有很多都是从其他博客那整理过来的,如果有不正确的地方,欢迎各位大佬指正。Retrofit是什么?    Retrofit简单的说就是一个网络请求的适配器,它将一个基本的Java接口通过动态代理的方式翻译成一个HTTP请求,并通过OkHttp去发送请求。Retrofit底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Re...

2018-06-10 17:20:51 296

原创 AsyncTask的使用

    后台获取手机安装的apk列表,其中分为系统apk与非系统apk以及获取root权限之后的隐藏apk,默认通过apk名称排序。使用RecycleView,RecycleView.Adapter&lt;Adapter.appViewHolder&gt;,appViewHolder继承自RecycleView.Adapter,其中依赖部分开源代码progressWheel,fastScoller...

2018-03-31 15:17:02 293

原创 将SeachView添加到ActionBar中实现搜索功能

    主要功能:在已获取的appList中实时搜索与app名相匹配的结果      ActionView是一种可以在ActionBar中替换Action按钮的控件,它可以允许用户在不切换界面的情况下通过ActionBar完成一些较为丰富的操作。    为了声明一个ActionView,我们可以在menu资源中通过actionViewClass属性来指定一个控件,例如可以使用如下方式添加Searc...

2018-03-29 10:34:25 211

原创 android 中res的String.xml中%1$s、%1$d等的用法

在TextView中想要动态的显示某些值,用到%1$s,%1$d,先介绍一下:%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00%d   (表示整数)%f    (表...

2018-03-11 21:17:58 832

原创 Android开关机动画

开机动画文件夹所在位置 : “/system/media/bootanimation.zip”文件结构如下:        part0、part1 文件夹放置开机图片,注意图片分辨率与屏幕大小相匹配,图片格式可为 “.jpg”和 “.png”格式desc.txt文件解析720 1280 30p 1 0 part0p 0 0 part1720--屏幕宽度,1280--屏幕高度,30--帧速3...

2018-03-08 11:33:51 537

原创 获取应用当前activity

获取应用当前activity1、获取权限2、调用方法public void getTopActivityName() { String topActivityClassName = null; ActivityManager activityManager = (ActivityManager) (getApplicationContext

2018-01-11 17:35:14 2450

原创 Android简单实用方法收集

收集一些实用方法 ,最终整理出几个util类,方便以后项目使用,持续更新。 ** * 获得屏幕宽度与高度 */ public void getScreenSize() { if (Build.VERSION.SDK_INT &gt; 13) { Point p = new Point(); ...

2018-01-09 16:12:56 198

原创 Struct2 验证框架

使用Struct2验证框架实现用户博客注册时的输入信息正确性校验功能。上代码:register.jsp新博客系统注册 博客网站系统 » Font Size « 博客首页 新博客注册 博客登录

2017-07-04 11:54:13 719

原创 struct2拦截器

拦截器是Struts2的一个重要特性。Struts2框架的大多数核心功能都是通过拦截器来实现的,像避免表单重复提交、类型转换、对象组装、验证、文件上传等,都是在拦截器的帮助下实现的。拦截器的一个重要特征是:它可以在Action之前调用。拦截器,在AOP(Aspect Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截。然后再之前或之后加入某些操作。

2017-07-03 12:31:02 559

转载 HQL语句

// HQL: Hibernate Query Language.// 特点:// >> 1,与SQL相似,SQL中的语法基本上都可以直接使用。// >> 2,SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性。// >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的。// >> 4,SELECT可以省略. // 1,简单的查询,Employee为实体名

2017-07-01 10:18:54 223

原创 对象初始化顺序

简单介绍一下对象的初始化顺序,类加载之后,从父类到子类(自上而下)执行static修饰的语句(静态块)当static语句执行完之后,再执行main()方法。如果有对象new了自身对象,将自上到下执行构造代码块、构造器。静态块>主方法>构造块>构造方法注:构造代码块:直接在类中定义切没有加static关键字的代码块,每次创建对象都会被调用,并且执行次序优先于类

2017-06-29 16:21:57 311

原创 Hibernate Session

Hibernate在对资料库进行操作之前,必须先取得Session实例,Session是hibernate对数据库操作的基础,它不是我们所说的JSP页面传递参数的Session。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。session是线程安全,且由sessionFactory得到。取得session的前提条件

2017-06-26 17:51:03 344

原创 java 二分查找算法

Java实现的二分查找算法二分查找又称折半查找,它是一种效率较高的查找方法。         折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较

2017-06-25 17:42:02 206

原创 try-catch-finally

笔试题:public class Test1 { private static void test(int[]arr) { for (int i = 0; i ) { try { if (arr[i] % 2 == 0) { throw new NullPointer

2017-06-25 14:50:16 277

转载 MySQL左连接,右连接,等值连接

1.左连接(LEFT JOIN )SELECT M.columnname……,N.* columnname…..FROM left_table M LEFT JOIN right_table N ON M.columnname_join=N.columnname_join AND N.columnname=XXXWHERE M.columnname=XXX….. 

2017-06-22 21:06:09 308

转载 运行时异常与检查异常

Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:1.ThrowableThrowable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常。其中异常Exception分为运行时异

2017-06-21 18:47:49 524

转载 JSP内置对象

JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception1、request对象request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器

2017-06-21 13:19:33 146

原创 抽象类与接口

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。4、接口里定义的变量只能是公共的静态的常量(publicstatic final),抽象类中的变量是普通变量。5、抽象类里的抽象方法必

2017-06-21 12:59:56 169

原创 重写与重载

重写方法的规则:1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:

2017-06-21 12:26:09 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除