自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Android开发】AIDL

同一个进程之间的通信:iBinder ,例如Activity和Service之间的通信过程AIDL:Android Interface definition language作用:进程间的通信接口AIDL的使用创建aidl文件定义自己的方法// IMyAidlInterface.aidlpackage com.example.servicedemo;// Declare any non-default types here with import statementsin

2021-01-25 14:21:32 278

原创 【Android开发】Service基础

Service 仅仅是提供了一种不启动前台界面、让你在后台执行一些运算的途径。但它并不是开启了一条线程,Service还是运行在UI线程中的,要执行耗时操作时需要新开启子线程。Service 简介四大组件之一用于在后台处理耗时操作不受Activity生命周期的影响Service和Activity非常相似,但是它是没有界面的。他们可以共同实现的功能有:开辟线程访问网络操作数据库Service 生命周期onCreate()onStartCommand()onBind()o.

2021-01-25 11:11:58 144

原创 【Android开发】GSON解析

常用方法toJson-将bean对象转换为json字符串fromJson-将json字符串转换为bean对象添加依赖dependencies { implementation 'com.google.code.gson:gson:2.8.6'}类型转换 private fun parseByGSON() { //1. 添加依赖 //2. 实例化一个GSON对象(工具对象) val gson = Gson()

2021-01-25 09:04:00 227

原创 【Android开发】JSONObject解析

常用方法getJSONObject(String name) 获取JSONObject对象toString() 把JSONObject对象转换为json格式的字符串class JSONActivity : AppCompatActivity() { private var txt1: TextView? = null private var txt2: TextView? = null override fun onCreate(savedInstanceState: Bu

2021-01-24 17:40:51 852

原创 【Android开发】POST请求

POST请求class MainActivity : AppCompatActivity() { private var accEdt: EditText? = null private var pwdEdt: EditText? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(

2021-01-24 16:25:26 2364 1

原创 【Android开发】GET请求

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun myclick(view: View) { when (view.id) {

2021-01-24 16:02:43 1546

原创 【Android开发】网络权限申请

创建安全配置文件在res文件夹下创建xml/network-security-config文件增加cleartextTrafficPermitted属性<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted='true'/></network-security-config>添加.

2021-01-24 15:53:52 2044

原创 【Android开发】HTTP协议

HTTP协议即超文本传输协议,是建立在TCP/IP协议基础上的网络应用层协议。默认端口号是80,使用的版本是HTTP/1.1,它基于客户/服务器模式,客户端主动发出HTTP请求,服务器接收HTTP请求,返回HTTP响应结果。工作原理客户端连接到服务器发送HTTP请求服务器接收请求并返回HTTP响应释放连接客户端解析响应内容...

2021-01-24 15:12:59 283

原创 【Android开发】ViewPager

应用场景引导界面、相册多图片预览多Tab页面、App导航广告播放展示使用步骤添加依赖xml布局中引用viewPager声明数组,将图片存入创建适配器,完成资源配置为viewpager设置适配器1.添加依赖build.grandledependencies { implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha02'}2. xml布局中引用viewPager...

2021-01-21 21:57:38 1390 2

原创 【Android开发】ViewHolder

ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能//根据准备好的数据源和子项布局完成ListView效果的一一设置//做细节处理class MyAdapter(private val list: List<Msg>, private val ctx: Context) : BaseAdapter() { //获取数量(设置ListView的长度) override fun getCount().

2021-01-21 15:14:26 1164 2

原创 【Android开发】BaseAdapter

BaseAdapter主容器<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:la

2021-01-21 14:28:19 113

原创 【Android开发】SimpleAdapter

SimpleAdapter主容器<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://s

2021-01-21 09:54:52 183 1

原创 【Android开发】ArrayAdapter

适配器是AdapterView视图与数据之间的桥梁,用来处理数据并将数据绑定到AdapterView上步骤准备布局(每一项的显示效果)准备数据源实例化适配器为ListView设置适配器ArrayAdapter 主题容器<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.

2021-01-20 17:03:47 214

原创 【Android开发】Fragment传值

Activity向Fragment传值方法一//Activityfun myClick(view: View) { val transaction = supportFragmentManager.beginTransaction() when (view.id) { R.id.rb_index -> transaction.replace(R.id.container1, IndexFragment()) R.id

2021-01-20 14:45:40 269 1

原创 【Android开发】Fragment加载

静态加载 <!--静态加载,通过Android:name指定Fragment的路径--> <fragment android:id="@+id/fragment1" android:layout_width="200dp" android:layout_height="200dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constra

2021-01-19 17:17:40 504

原创 【Android开发】Fragment生命周期

生命周期添加FragmentonAttach():当fragment被添加到她所在的Context时被回调。只会被调用一次。onCreate():创建。代码中只需要初始化想要在Fragment中保持的必要组件。该方法只会调用一次。onCreateView():绘制界面组件,必须返回一个View(该Fragment所显示的View)。onActivityCreated():当Fragment所在的Activity被启动完成之后回调该方法。onStart():启动。onResume():恢复。

2021-01-19 16:04:57 194

原创 【Android开发】Fragment

Fragment在Android3.0+之后出现的一个Activity可以运行多个Fragment一个Fragment可以运行在多个Activity里Fragment不能脱离Activity存在Activity是屏幕的主题,而Fragment是Activity的一个组成元素

2021-01-19 15:46:49 132

原创 【Android开发】Activity的信息传递

简单信息传递发送信息val it3 = Intent(this, LearnActivity2::class.java)it3.putExtra("msg1", "message")it3.putExtra("msg2", 100)startActivity(it3)接受信息val it2 = intentval msg1 = it2.getStringExtra("msg1")val msg2 = it2.getIntExtra("msg2", 0)传递对象需要将对象序列化im

2021-01-19 14:06:58 85

原创 【Android开发】Activity的启动方式

显示启动 Intent it = new Intent(this, DialogActivity.class); startActivity(it);启动当前应用里普通的Activity。隐式启动隐式启动的传参方式是相当灵活的,在编译期间不会发生错误,可以打开很多不属于该应用的Activity(系统Activity)。隐式启动系统Activity //参数1:action,是Activity的别名 //参数2:Uri对象,打开的路径,通过协议来具体确定打开什么Activity

2021-01-19 13:48:34 303

原创 【Android开发】Activity的生命周期

4种状态运行状态:当前Activity位于前台,用户可见,可以获得焦点。暂停状态:其它Activity位于前台,该Activity依然可见,只是不能获得焦点。停止状态:该Activity不可见,失去焦点。销毁状态:该Activity结束,或Activity所在的进程被结束。状态转化加载ActivityonCreate(Bundle savedStatus): 创建Activity时被回调。该方法只能被使用一次。onStart():启动Activity时被回调。onResume():A

2021-01-19 13:18:05 246 1

原创 【Android开发】Activity 4种加载方式

配置Activity时可以指定android: launchMode属性,用于配置Activity的启动方式。该属性支持4个属性值:standard:标准模式,默认的加载模式singleTop:Task单例栈顶模式singleTask:Task内单例模式singleInstance:全局单例模式standard每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将Activity添加到当前Task栈中。这种模式不会启动新的T

2021-01-19 09:46:21 189

原创 【Android开发】activity 跳转

val intent = Intent(this@MainActivity, TestActivity::class.java)startActivity(intent)

2021-01-19 09:26:44 83

原创 【Android开发】SeekBar

使用场景简单使用与事件监听setProgresssetOnSeekBarChangeListener <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekBar" android:max="100" android:progress="30"/&g.

2021-01-19 08:46:35 137

原创 【Android开发】常用Buttons

CheckedBox <CheckBox android:id="@+id/checkbox" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:text="CheckBox" />override fun onCreate(savedInstanceS

2021-01-19 08:37:15 99

原创 【Android开发】约束布局

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.co

2021-01-18 16:15:48 161

原创 【Android开发】帧布局

<?xml version="1.0" encoding="utf-8"?><!--android:foreground 无条件处于最上层--><!--android:foreground="right|bottom"--><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" andr

2021-01-18 15:36:05 141

原创 【Android开发】简单View组件开发

View处理文本内容 TextView被点击的View Button处理图片内容的View ImageView接收用户信息输入的View EditView进度条类的VIew ProgressBar

2021-01-18 13:56:49 271

转载 【Android开发】Android Studio 中的 button 无法使用 background 更改背景颜色

•解决方案res/values/themes.xml下的<style name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar">改为<style name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge"> 亲测有效!!!...

2021-01-18 09:17:03 2090 9

原创 【Android开发】相对布局

相对于父容器(取值:true/false)相对于其它控件(取值:其它控件id)<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> &l

2021-01-17 20:33:18 431

原创 【Android开发】线性布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="20dp" android:padding="20dp"&gt

2021-01-17 17:48:30 104

原创 【Android开发】Gradle

GradleAndroid主流编译工具项目中有两个gradle:setting.gradle: 记录哪些module应该被记录到编译过程build.gradle:里面的配置会应用到所有的项目中项目中每一个module都有自己的build.gradle:对当前module的配置,会覆盖项目中的build.grandle的配置Gradle中部分配置:minSdkVersion: 最小API level如果手机设备API版本低于这个version,手机就不能安装这个应用项目中不能使用

2021-01-17 09:06:18 122 1

原创 【算法】判断一个数是否是素数

【思路】素数是指,在大于1的自然数中,除了1和它自身没有其它因数的自然数,称为素数。如果该数N小于2,则一定不是素数。如果N可以整除从0到N之间的任意一个整数i,则N不是素数。如果N可以整除i的平方,那么N也一定可以整除i,因此可以使用 i*i<=N来作为循环结束的判断条件来简化计算。【代码】public static boolean isPrime(int N){ if(N < 2) return false; for(int i = 2; i * i <= N; i++

2020-08-12 04:52:59 1831

原创 【Java】final关键字使用方法整理

final的作用在早期使用final,会将final方法转为内嵌调用,内嵌调用:用一个方法去调用另一个方法,当编译器发现方法是final的,它会把另外方法的内容全部挪过来,相当于是在同一个方法中执行,而不进行方法的调用。因为方法直接的调用会有一定的性能损耗,所以可以提高程序运行的效率现在:类防止被继承、方法防止被重写、变量防止被修改天生是线程安全的,而不需要额外的同步开销现在的JVM会尽量优化代码的编译,因此早期带来的性能提升在现在是可以忽略的final修饰变量属性被声明为

2020-08-12 04:49:41 119

原创 【算法】欧几里得算法——求解最大公约数

思路:如果q是0,则最大公约数是p。否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。代码实现:pubic static int gcd(int p, int q){ if(q == 0) return p; int r = p % q; return gcd(q, r);}

2020-06-12 09:34:09 125

原创 【MAC】TOMCAT Cannot find XXX/XXX/tomcat/bin/setclasspath.sh问题解决方法

今天想尝试更换TOMCAT版本,在新的tomcat文件夹的bin目录下输入./startup.sh命令之后发现报Cannot find XXX/XXX/tomcat/bin/setclasspath.sh的问题。经过研究后发现是之前在配置tomcat时,在/etc/profile文件中设置了默认路径,将路径更改至新的tomcat文件夹下即可。方法如下:首先将从官网上下载的apache-tomcat-8.5.55文件夹放在Library下。路径为:/Users/userName/Library/apa

2020-05-31 07:13:23 906

原创 【Java】可变参数列表

可变参数列表的表达是在数据类型后面加省略号。例如,public void sum(int... n){}可变参数有以下几个规则:可变参数列表作为参数,方法调用时可以传入0个或多个参数,传入数组也可以。例如,//以下两种引用方式是都可行的sum(1,2,3);int[] a = {1,2,3};sum(a);但是数组作为方法参数,方法调用时只能传入数组。参数列表中如果有两个以上的参数,可变参数一定是在最后的, 并且一个方法中只能有一个可变参数。在方法定义中,认为可变参数

2020-05-17 04:22:26 200

原创 【Java】冒泡排序

public class BubbleSort { public static void main(String[] args) { int[] arr = {34, 12, 67, 27, 78, 10}; System.out.println("原始数组为:"); for(int a:arr) { System.out.print(a + " "); } System.out.println(); int temp; for(int i=0; i<a

2020-05-15 06:52:27 75

原创 【Java】一维数组 vs 二维数组

数组是相同的数据类型按顺序组成的一种引用数据类型。一维数组一维数组的三种创建方式://方法一int[] arr = new int[3]; //对于整型数组,数组的默认值都为0arr[0] = 1;arr[1] = 2;arr[2] = 3;//方法二int[] arr = new int[3]{1,2,3};//方法三int[] arr = {1,2,3};注释:数组创建时必须指定长度。二维数//二维数组的创建int[][] intArray = new int[3][

2020-05-15 06:35:35 162

原创 【Java】获取不同数据类型长度的方法

//一维数组长度int[] arr = new arr[3];int arrLength = arr.length;//二维数组的行数int[][] arrs = new arrs[3][3];int arrsLength = arrs.length;//二维数组中某一个一维数组的长度int arrsLength1 = arrs[1].length;//得到字符串长度String str = "mystring";int strLength = str.length();//得

2020-05-15 06:28:07 928

原创 【Java】类型转换

Java有两种格式转换方式:隐式转换与显式转换。隐式转换简单地来讲,就是只能从一个范围较小的数字转换到一个范围较大的数字,如32位的int类型到64位的long是可以隐式转换的,即可以直接把一个int类型的变量赋给一个long类型的变量。例如,double d=5634.4f //floatdouble d=123 //intdouble d=123L // long int相反,从范围较大的数字转化为范围较小的数字的方式,是显示转换。该类类型转换很可能存在精度的损失。代码格式为

2020-05-14 05:18:17 94

空空如也

空空如也

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

TA关注的人

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