自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小Tian的博客

记录了一名Android小白成长的历程

  • 博客(140)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android/Java中线程池详解

参考文章:http://gityuan.com/2016/01/16/thread-pool/https://blog.csdn.net/pozmckaoddb/article/details/51478017前言在我们平时的工作或者课堂的学习中,对于开一个子线程常见到如下写法:Thread thread = new Thread(new Runnable() { @Override public void run() { ...

2021-10-31 11:34:53 1632 1

原创 Runnable,Callable,Future,FutureTask的区别

Runnable,Callable,Future,FutureTask的区别:参考:https://baijiahao.baidu.com/s?id=1631326488605078999&wfr=spider&for=pc一般创建线程的方法:继承Thread,实现Runnable这两种都没有返回值,一般需要用到Handler去发送结果然后处理;在这两种传统方法中,推荐Runnable,因为Thread只能继承,Java只有单继承,而Runnable是通过接口;并且在线程池中,Ru

2021-10-24 12:02:15 358

原创 Android春招一面面试题Shopee

Android春招面试题Shopee 数据库的事务? 事务就是对数据库操作的序列,是一个不可分割的工作单位,这个序列中的操作或者全部执行,或者全部不执行; 特性:原子性/持久性/一致性/隔离性 原子性:或者全部执行或者全部不执行,如转账时要么同时成功要么同时失败; 一致性:是指事务开始之前和事务结束之后,不能破坏关系数据的完整性和业务逻辑的一致性;如转账时保证钱的总数是不变的; 持久性:当提交后,对数据库的改变是通就行

2021-05-02 17:33:35 443 1

原创 字节跳动Android春招一面

字节跳动Android面试 四大引用,软引用什么时候使用? 强引用:具有强引用就不会被垃圾回收器回收,即使内存空间不足,抛出异常也不会回收;除非其在生命周期已经过了或者显示地将其设置为null; 软引用:SoftReference,通过get来获取对象,在jvm内存不足的时候会被回收;用来实现内存敏感的高速缓存,如网页缓存,图片缓存等,一旦SoftReference保存了对一个java对象的软引用猴,在回收前,get方法提供的是该对象的强引用,回收之后,get返回null; 弱引用:Wea

2021-04-25 12:39:57 265

原创 java的反射

反射的作用在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;工具类这里给大家提供一个反射工具类,里面的方法都有注释常用的就是四个方法public class ReflectionHelper { /** * 传入类名去返回一个对应的Class * @param className * @return */ public static Class

2021-02-02 20:06:44 111

原创 正则表达式

测试网址:https://regex101.com/参考视频:参考视频网站? : 表示前一个字符可以出现0次或1次如a?可以匹配啊a,空格* : 表示前一个字符可以出现0次到多次a*会匹配a,aaa,空格+ : 会匹配出现1次以上的字符a+会匹配a,aa{} : 表示出现的返回{6} 表示前一个字符出现6次{2,6} 表示前一个字符出现2到6次{2,} 表示前一个字符出现2次以上() : 匹配多个字符(ab)+ : 匹配ab出现一次以上的字符;| : 或运

2021-02-02 11:57:53 197

原创 Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)

隐藏虚拟按键,并且全屏使用:ScreenUtils.hideBottomUIMenu(getWindow().getDecorView()); /** * 隐藏虚拟按键,并且全屏 */ public static void hideBottomUIMenu(View view) { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT

2021-02-01 17:40:44 501 1

原创 点击事件是否在view内部

//获取的是距离屏幕左侧的x和yif (isPointInView(popupView, (int) motionEvent.getRawX(), (int) motionEvent.getRawY())) {private boolean isPointInView(View view, int x, int y) {int[] location = new int[2];//获取view的坐标并赋值给location数组view.getLocationOnScreen(locatio

2021-01-31 16:26:23 143

原创 Android中的接口的使用举例

这里讲解了两种大家可以在学习Android中容易对接口迷茫的两种用法1.用于回调我们会在子线程中执行耗时操作,就可以用接口进行耗时操作结果的回调;首先定义一个接口public interface OnNetInfoCallback { //获取信息成功 void onSuccess(String info); //获取信息失败 void onFailure();}在该类中我们进行模拟耗时操作,用接口进行结果的回调可以看到在该类中的getInfo方.

2020-11-21 20:54:11 2600 5

原创 自定义View和自定义ViewGroup实例讲解

参考:https://www.jianshu.com/p/c84693096e41自定义View定义一个自定义View的步骤:1.需要继承View或者View的子类;2.重写至少两个构造方法;3.自定义xml中的属性;declare-styleable中的format的类型:reference:引用类型,如@drawable/xxxcolor:颜色,如#fff000dimension:尺寸,如11dp其他的:float,integer,boolean,string

2020-11-09 20:05:25 281

原创 武汉游戏公司android面试

Android实习生面试,有三轮技术面第一轮:Handler的原理第二轮:RecyclerView中Recycler的原理hashMap的数据结构,是否线程安全http协议的了解SharePreferences的原理扔鸡蛋问题第三轮重明数扔石头问题...

2020-10-29 10:34:08 931 5

原创 常考的排序算法-冒泡排序和快速排序(Java版)

复杂度O(n^2)的有冒泡,插入,选择复杂度O(nlogn)的有快速,归并,堆排序1.冒泡排序(n^2)思想:排n次,每次把没排好的最大的挑出来,然后排到后面去,最大的排最后面,次大的排倒数第二个..加一个flag优化一下```#include<bits/stdc++.h>using namespace std;int main(){ vector<int> a = {9,8,7,6,5,4,3,2,1}; int flag = 1; in...

2020-10-16 20:32:13 206 1

原创 java中的参数的值传递和引用传递

今天发现了就是当一个函数的参数为整形,这个参数就是值传递;而当一个参数为数组时,就是为引用传递网上解释:整型属于值传递,数值传递时,值不会发生改变;而数组属于引用传递,调用方法后,原数值会被重新赋值看代码把:private static void changeStr(String s){ s = "changed"; } private static void changeArray(int[] a){ a[0] = 0; } p

2020-10-16 19:35:55 148

原创 Android 使用PopupWindow做一个弹窗(kotlin版)

运行结果先介绍一些参数contentView : 用于设置相应的布局animationStyle: 用于设置进入和退出的动画isOutsideTouchable :点击外侧是否可以关闭弹窗(这这里因为我们设置了全屏所以没有设置这个)isClippingEnabled 是否可以铺满屏幕(false为可以铺满,包括状态栏和导航栏)具体来举个栗子说明/** * @Anthor:Tian * @Date:2020/10/5 * @Description:弹窗 */cl..

2020-10-06 12:18:35 3255 2

原创 Android 防止双击(kotlin)

这个在项目中用得非常多,因为那些测试人员非常喜欢在测试的时候多次点击同一个按钮看看有没有什么bug所以写点击事件的时候尽量都用这个/** * @Anthor:Tian * @Date:2020/10/5 * @Description:防止双击 */abstract class NoDoubleClickListener : View.OnClickListener { companion object { const val MIN_CLICK_DELAY_TIM

2020-10-05 15:41:33 1706 1

原创 Android中EditText的filter过滤(kotlin版)

最近写文字老是用kotlin是因为用了kotlin再也不想用java了这里写了一个用于过滤空格和换行的,其中注释说明了每一个参数的意义class SpaceAndLineInputFilter : InputFilter { override fun filter( source: CharSequence?,//即将要输入的字符串 start: Int,//source的start end: Int,//source的end .

2020-10-05 11:36:31 1899 3

原创 Android关闭软键盘的方法

需要两个参数 :BaseApplication.app 这个是全局的上下文et_person_info 这个是当前页面的EditText ,因为只有EditText才会调用键盘java写法InputMethodManager imm = (InputMethodManager) BaseApplication.app .getSystemSe.

2020-10-04 16:22:04 2794

原创 Android快速知道自己在哪个页面

当在一个大型项目中时,如果想要知道自己当前APP运行在哪一个页面可以这样写:在所有Activity的基类BaseActivity的Oncreate()中:Log.e("页面", getClass().getSimpleName());这样通过logcat就很快知道自己在哪个页面了...

2020-09-28 11:06:18 585

原创 java中Random的用法

模拟一个验证码 Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 6; i++) { sb.append(random.nextInt(10));//0到9 } System.out.println(sb.toString());

2020-09-27 15:17:25 225

原创 安卓广播基本用法和实战:模拟强制下线

参考资料:郭霖老师第一行代码第二版第五章一.什么是广播在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。在生活中,我们的收音机的广播电台需要调到特定的频率才能接收到内容,在android中也是一样,通过sendBroadcast来发送广播并携带一个action,只有接收者的action和发送者action相同,才可以接收到这个广播.二.广播有什么用...

2020-09-20 16:11:37 705 1

原创 Android中代码动态修改控件属性

修改字体的粗细tipTextView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//加粗 tipTextView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));//常规设置字体的颜色leftTextView.setTextColor(context.getResources().getColor(R.color.black_191919));设

2020-09-17 19:40:58 2962 1

原创 Kotlin语法总结3

参考:第一行代码第三版协程可以理解为一种轻量级的线程,让我们可以使用编程实现不同协程之间的切换,使得高并发程序的运行效率得到极大的提升;依赖: implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1"开启协程的几种方式:1.使用Global.launc.

2020-09-13 20:19:39 313 1

原创 kotlin语法总结2

参考:第一行代码第三版标准函数with,run,applywith:接受两个参数,第一个参数是对象,第二个参数是一个Lambda表达式,默认对第一个参数进行操作,并把最后一行作为返回值如下代码中,在{}中都是默认对StringBuilder进行操作val fruitList = listOf("Apple", "banana", "Orange") val result = with(StringBuilder()) { append("Start eating .

2020-09-10 19:08:10 381 1

原创 Rxjava2笔记2

笔记1:https://blog.csdn.net/qq873044564/article/details/108073746基本相应类型Observable:最基本的响应类型,不支持背压背压是什么背压就是上游发送数据的速度很快,下游没有来得及处理,就会累积很多数据;在高并发的时候会发生背压Observable.create(new ObservableOnSubscribe<String>() { @Override pub

2020-08-22 17:17:45 236 1

原创 Rxjava2的笔记1 --操作符

implementation 'io.reactivex.rxjava2:rxjava:2.2.6' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'创建操作符create :创建操作符,创建最简单的事件流其中Consumer为自定义观察者方法,不必全部实现观察者所有方法,此accept对应onNext()方法Observable.create(new ObservableOnSubscribe<Integer...

2020-08-21 12:27:02 250

原创 视频,图片,字符测试数据

测试的时候经常用到视频,图片和字符等/** * @Anthor:Tian * @Date:2020/8/14 * @Description: */public class UrlUtil { public static String[] videoUrls = { "https://v-cdn.zjol.com.cn/280443.mp4", "https://v-cdn.zj.

2020-08-14 15:45:35 242

原创 安卓中Rxjava的使用举例:请求一个网络图片

参考学习:https://www.bilibili.com/video/BV1AD4y1D7X1?from=search&seid=12155248327851699054添加依赖: implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'io.reactivex.rxjava3:rxjava:3.0.0'在build.gradle的Android中compileOptions {

2020-08-10 15:08:09 256

原创 安卓GreenDao基本使用

配置参考github官方https://github.com/greenrobot/greenDAO不过发现配置似乎需要翻墙首先在build.gradle repositories { google() jcenter() mavenCentral() // add repository } classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'在build.gradle(

2020-08-09 21:03:31 521

原创 安卓获取全局Context和Handler

public class BaseApplication extends Application { private static Context sContext = null; private static Handler sHandler = null; @Override public void onCreate() { super.onCreate(); sContext = getBaseContext(); sH.

2020-08-08 20:40:04 704

原创 安卓自定义Dialog设置自动消失

是上面检查是否连网的这个弹窗<style name="Dialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog"> <!--背景透明--> <item name="android:windowBackground">@android:color/transparent</item> <!-- 不允许对话框的背景变暗 --> .

2020-08-08 20:14:05 890

原创 安卓中对BaseMultiItemQuickAdapter的继承实现不同网络状态下的页面

大家如果用过BRVAH就知道setEmptyView这个方法不仅能用来设置空状态,还可以用它来设置加载中和加载失败的状态,所以我们需要去写一个BaseAdapter去判断一下状态,然后在不同的状态下去实现不同的页面首先要写一个页面用来控制不同不同状态的显示,也就是用一个页面就可以解决不同状态的显示效果,起始状态都为gone<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://sc...

2020-08-08 18:46:37 538

原创 安卓TextView中的Span常用方法总结

目录封装类基本用法举例封装类自己去封装了一个,以后用起来方便一些import android.text.SpannableStringBuilder;import android.text.Spanned;import android.text.style.AbsoluteSizeSpan;import android.text.style.BackgroundColorSpan;import android.text.style.BulletSpan;import a.

2020-08-08 18:07:27 2445 1

原创 java把一长串数字转换为日期

public class TimeUtil { //2020-08-07 08:01:31 public static String getTimeYMDHHmmss(long longtime) { String formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(longtime)); return formatTime; } //16.

2020-08-07 20:06:49 5177

原创 安卓中的补间动画和属性动画的基本操作

普通动画和属性动画的区别:1.用法更简便 2.改变了事件,也就是真正改变了属性,如view的位置透明度变化1.普通动画其中repeatCount为循环多少次,infinite为无限循环<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlp

2020-08-07 19:59:13 211

原创 ConstraintLayout的一个例子

一般项目中要在最外层里面套一个ConstraintLayout,然后设置成9:16的宽高比,然后控制比例的话是使用Guideline去划分比例<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xm...

2020-08-05 21:41:38 252

原创 RecyclerView中GridLayoutManager控制每一行的不同的列数

比如我要实现第一行是一列,第二行是两列这里的每一列的个数是由你设置的spanCount / return 的数决定的 GridLayoutManager llm = new GridLayoutManager(getContext(), 2); //count/size=item数量 llm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override .

2020-08-05 21:21:24 6450 1

原创 使用EasyRefreshLayout快速实现下拉刷新和上滑加载

添加依赖implementation 'com.github.anzaizai:EasyRefreshLayout:1.3.1'在RecyclerView外面套一层 <com.ajguan.library.EasyRefreshLayout android:id="@+id/erl_success_view" android:layout_width="match_parent" android:layout_height="matc..

2020-08-05 21:05:15 604

原创 BRVAH的基本使用

最近实现多种布局运用到了BRVAH使用步骤,首先给item继承一个public class StudyRoom implements MultiItemEntity{ private int itemType = 0; public static final int TYPE_NORMAL = 0;//添加一些类型数值 //...成员属性 @Override public int getItemType() { //在这里控制

2020-08-05 20:58:30 1495 3

原创 安卓开发中Glide的基本使用

添加依赖implementation 'com.github.bumptech.glide:glide:4.4.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'最基础的,如果涉及到网络的话记得添加网络权限Glide.with(BaseApplication.getContext()).load(url).into(imageView);添加OptionsGlide.with(BaseAppli

2020-08-05 20:25:29 1614

原创 记一次安卓面试

昨天面试了一家200人规模的IT公司,去面试的岗位是安卓开发实习生,问得问题很基础自我介绍 java的三种特性 java有几种基本数据类型 接口和抽象类的的区别 安卓四大组件 fragment的懒加载 安卓四种启动模式 有36匹马,6个赛道,没有计时器...

2020-08-04 09:13:45 144

图灵机器人.rar

模仿qq聊天界面以及调用免费借口和图灵机器人对话,用来安卓练手比较合适

2019-10-07

Alarmalert-csdn_2.rar

是一个闹钟App,功能是可以在预定时间提醒,在上一版的基础上更新了ui,使得更加贴近现代的UI,用来练手比较合适.

2019-10-07

学生管理系统APP

.数据库方面(因为本来就是为了数据库课设而做的): 考虑了数据库设计中的实体完整性(学号不能重复),用户定义的完整性(如学号的位数为12位,名字不能为空等) 2.安卓方面 本项目对于主要运用了Litepal数据库更新之后加的功能: 登录,注册(分为管理员登录和普通学生登录) 密码管理经过MD5加密 查询功能可以通过学号或名字查询(原来只能通过学号查询) 添加退出登录功能 添加记住密码,修改密码功能 添加用户名自动补全功能

2019-09-16

程序员考试资料

程序员历年真题2000-2019解析程序员历年真题解析程序员历年真题解析

2019-04-21

数字电子钟

设计一个能显示日期、小时、分钟、秒的数字电子钟,并具有整点报时的功能。 2).由晶振电路产生1HZ标准的信号。分、秒为六十进制计数器,时为二十四进制计数器。 可手动校正时、分时间和日期值。

2019-03-07

空空如也

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

TA关注的人

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