- 博客(136)
- 资源 (18)
- 收藏
- 关注
原创 泛型中extends和super的区别
泛型的定义泛型的定义:泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。泛型的一些基本术语以ArrayList和ArrayList做简要介绍:整个ArrayList称为泛型类型Array...
2019-04-03 17:42:48
1267
1
原创 抽象类和接口区别
抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。abstract class A{//定义一个抽象类 public void fun(){//普通方法 ...
2019-04-03 16:40:12
217
原创 什么是内部类?内部类的作用
在java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫内部类,外面的类就叫外部类。在这情况下,这个内部类可以看做外部类的一个成员。内部类好处1.隐藏你不想让别人知道的操作,也即封装性。public interface Contents { int value();} public interface Destination { String readLabel...
2019-04-03 11:01:44
9512
1
原创 String、StringBuffer和StringBuilder的比较
String:查看源码得知,String类的声明是:public final,所以可以很清楚的知道,fianl的话是改变不了的,所以,如果我们用String来操作字符串的时候,一旦我们字符串的值改变,就会在内存创建多一个空间来保存新的字符串,可想而知,一旦遇到复杂的操作,用String是多么低效率的事啊!所以,一般涉及到字符串操作的,我们一般使用StringBuffer或者StringBuild...
2019-04-02 17:47:37
181
原创 面向对象的三大基本特征:封装、继承、多态
1.封装封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。 类、方法其实也是封装的体现;好处:将变化隔离;便于使用;提高重用性;安全性。封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。2.继承继承:把多个类中相同的内容提取出来,定义到一个类中。然后让这多个类和这个类产生一个关系,使这多个类具备该类的数据了。 这种关系叫:继承。继承是为了重用父类代码...
2019-04-02 17:28:51
523
原创 Java中数据类型相关知识点
JAVA数据类型如下:1.int、char、long各占多少字节数字节也叫Byte,是计算机数据的基本存储单位,在电脑里一个中文字占两个字节。8bit(位)=1Byte(字节)1024Byte(字节)=1KB1024KB=1MB1024MB=1GB1024GB=1TB其中:K是千,M是兆,G是吉咖,T是太拉。由上图可知,int是4个字节(Byte),chart是2个字节(By...
2019-04-02 16:58:24
463
原创 java中==和equals和hashCode的区别
在java中:==是运算符,用于比较两个变量是否相等。equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。Object的equals方法如下:public boolean equals(Object obj) { return (this == obj); }hashCode也是...
2019-04-02 16:26:38
264
原创 Android 性能优化(二)之布局优化
60fps VS 16ms根据Google官方出品的Android性能优化典范,60帧每秒是目前最合适的图像显示速度,事实上绝大多数的Android设备也是按照每秒60帧来刷新的。为了让屏幕的刷新帧率达到60fps,我们需要确保在时间16ms(1000/60Hz)内完成单次刷新的操作(包括measure、layout以及draw),这也是Android系统每隔16ms就会发出一次VSYNC信号触发对
2017-12-13 17:28:56
614
原创 自定义控件学习笔记(六)绘制顺序
Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。1 super.onDraw() 前 or 后?自定义绘制最基本的形态:继承 View 类,在 onDraw() 中完全自定义它的绘制。绘制代码写在 super.onDraw() 的上面还是下面都无所谓,甚至,你把 super.onDraw() 这行代码删掉都没关系,效果都是一样的——因为在 View 这个类里,onDraw()
2017-11-27 16:34:57
279
原创 自定义控件学习笔记(六)绘制顺序
Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。1 super.onDraw() 前 or 后?自定义绘制最基本的形态:继承 View 类,在 onDraw() 中完全自定义它的绘制。绘制代码写在 super.onDraw() 的上面还是下面都无所谓,甚至,你把 super.onDraw() 这行代码删掉都没关系,效果都是一样的——因为在 View 这个类里,onDraw()
2017-11-27 16:29:31
399
原创 自定义控件学习笔记(五)Canvas 对绘制的辅助——范围裁切和几何变换
1 范围裁切范围裁切有两个方法: clipRect() 和 clipPath()。裁切方法之后的绘制代码,都会被限制在裁切范围内。1.1 clipRect()canvas.save(); canvas.clipRect(left, top, right, bottom); canvas.drawBitmap(bitmap, x, y, paint); canvas.restore();
2017-11-23 16:40:58
616
原创 自定义控件学习笔记(四)文字的绘制
1 Canvas 绘制文字的方式Canvas 的文字绘制方法有三个:drawText() drawTextRun() 和 drawTextOnPath()。1.1 drawText(String text, float x, float y, Paint paint)text 是文字内容,x 和 y 是文字的坐标。但需要注意:这个坐标并不是文字的左上角,而是一个与左下角比较接近的位置。大概在这里:
2017-11-20 17:42:50
1673
原创 自定义控件学习笔记(三)Paint详解下
2.7 setMaskFilter(MaskFilter maskfilter)为之后的绘制设置 MaskFilter。上一个方法 setShadowLayer() 是设置的在绘制层下方的附加效果;而这个 MaskFilter 和它相反,设置的是在绘制层上方的附加效果。 到现在已经有两个 setXxxFilter(filter) 了。前面有一个 setColorFilter(filter) ,是对
2017-11-17 16:21:52
571
原创 自定义控件学习笔记(三)Paint详解
Canvas 的 drawXXX() 方法配合 Paint 的几个常用方法可以实现最常见的绘制需求;而如果你只会基本的绘制, Paint 的完全功能的掌握,能让你更进一步,做出一些更加细致、炫酷的效果。Paint 的 API 大致可以分为 4 类: 颜色 效果 drawText() 相关 初始化1 颜色Canvas 绘制的内容,有三层对颜色的处理: 1.1 基本颜色 Paint 设置颜色
2017-11-16 17:59:14
1577
原创 自定义控件学习笔记(二)drawPath()
drawPath(Path path, Paint paint) 这个方法是通过描述路径的方式来绘制图形的,它的 path 参数就是用来描述图形路径的对象。path 的类型是 Path ,使用方法大概像下面这样:public class PathView extends View { Paint paint = new Paint(); Path path = new Path();
2017-11-15 17:58:57
10505
原创 自定义控件学习笔记(一)Canvas 的 drawXXX() 系列方法
Canvas 的 drawXXX() 系列方法及 Paint 最常见的使用Canvas.drawXXX() 是自定义绘制最基本的操作。掌握了这些方法,你才知道怎么绘制内容,例如怎么画圆、怎么画方、怎么画图像和文字。组合绘制这些内容,再配合上 Paint 的一些常见方法来对绘制内容的颜色和风格进行简单的配置,就能够应付大部分的绘制需求了。Canvas 类下的所有 draw- 打头的方法,例如 dra
2017-11-15 17:11:16
2439
1
原创 Android内存优化:Reckon(二)
了解自己应用的内存使用情况是很有必要的。如果当内存使用过高的话就需要对其进行优化,因为更少的使用内存可以减少ANDROID系统终止我们的进程的几率,也可以提高多任务执行效率和体验效果。下面从系统内存(system ram)和堆内存(heap)两个方面介绍一些查看和计算内存使用情况的方法:System Ram(系统内存)观察和计算系统内存使用情况,可以使用Android提供给我们的两个工具procst
2017-10-12 18:00:23
598
原创 Android内存优化(一)
RAM(random access memory)随机存取存储器。说白了就是内存。一般Java在内存分配时会涉及到以下区域:寄存器(Registers):速度最快的存储场所,因为寄存器位于处理器内部,我们在程序中无法控制栈(Stack):存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆(Heap):堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自
2017-10-12 14:58:29
229
原创 Http协议
1、HTTP的历史1、HTTP的概念: HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。 它是一个应用层协议,承载于TCP之上。由请求和响应构成,是一个标准的客户端服务器模型2、HTTP的发展历史: 作为Web文档
2017-10-11 17:09:51
478
原创 AndroidStudio实用技巧总结
1.一直停留在fetching Android sdk compoment information界面找到安装的Android Studio目录下的bin目录。找到idea.properties文件,用文本编辑器打开。在idea.properties文件末尾添加一行: disable.android.first.run=true ,然后保存文件。关闭Android Studio后重新启动,便可进入界
2017-09-30 17:45:16
580
原创 AndroidStudio翻译插件:ECTranslation
今天给大家推荐一款名为ECTranslation的Android Studio翻译神器。安装File->Settings->Plugins,选择按钮Browse Repositories搜索ECTranslation然后安装,重启AndroidStudio,插件就安装好了。修改快捷键File – Settings – Keymap – 搜索 translate 双击或鼠标右击,先Remove掉原
2017-09-05 17:39:02
481
原创 Android studio插件GsonFormat 的使用
GsonFormat作用:根据Gson库使用的要求,将JSONObject格式的String 解析成实体。GsonFormat的github地址:https://github.com/zzz40500/GsonFormatGsonFormat安装:Androidstudio的插件的安装都是一样的。方法一:1.Android studio File->Settings..->Plugins–>B
2017-06-22 10:58:43
336
原创 Eclipse修改项目名称
1:修改项目目录下:.project文件<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>GZELearning</name>2.选择安卓项目,按F2,修改名称
2017-05-05 09:59:29
344
原创 Activity C中关闭Activity A的方法
在A里面设置一个静态的变量instance,初始化为this 在C里面,A.instance.finish() 如果原生项目接入RN项目后,怎么关闭RN界面呢? 道理和上述方法一样: 在RN界面调用原生方法,在原生方法中使用上诉方法即可。 代码如下: RN界面添加点击方法:方法的内容为调用原生方法<TouchableOpacity onPress={this.onPressOut.bind
2017-04-27 18:01:57
581
原创 设置渐变背景色
//设置从上到下的渐变色 GradientDrawable gradient=new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,new int[]{Color.RED,Color.YELLOW}); getWindow().setBackgroundDrawable(gradient);
2017-01-17 16:56:31
445
原创 将可视化组件保存在png图像文件中
View view = getLayoutInflater().inflate(R.layout.activity_main, null); //打开图像缓冲 view.setDrawingCacheEnabled(true); //必须调用measure和layout方法才能成功保存可视组件的截图到png图像文件 //测量View大小
2017-01-17 16:55:09
372
原创 studio添加Eclipse的依赖包
1、Eclipse导出gradle项目File->Export->Generate Gradle build files然后一直下一步,选择你要导出的项目(不用管依赖项目,会自动导出的),如图: 2、AS导入启动AS进入“welcome to android studio”这个界面,选择“Import Non-Andorid Studio Project”,一定是这个选项,不然导入有问题。(如果你
2016-12-14 16:36:04
467
原创 遍历Map
Map提供了一些常用方法,如keySet()、entrySet()等方法。 定义一个Map: Map<String, Object> map = new HashMap<>(); map.put("Page", 1); map.put("Row", 10); map.put("IsUser", 0); map.put("Type",
2016-12-08 10:45:04
440
原创 Android Data Binding1(基础用法)
目前Data Binding只能在Android Studio 1.3以上版本且gradle版本也必须为1.3以上的,所以没升级的先升级装备吧。需要使用Data Binding,只需要在项目的build.gradle文件下添加如下代码就可以了:android { … dataBinding { enabled = true }}使用Data Binding前
2016-12-05 10:23:19
367
原创 上拉隐藏/下拉显示 头部和底部导航栏
给listview添加手机监听,根据滑动位置,确定导航栏的隐藏和显示。 mlistView.setOnTouchListener(new View.OnTouchListener() { private float mEndY; private float mStartY; private int direction;
2016-11-25 17:37:23
4235
原创 TabActivity自定义底部导航栏
TabActivity本身继承自ActivityGroup,主要功能是实现多个activity或者view之间的切换和显示,要使用该类必须新建一个类来继承TabActivity,并且该类的xml配置文件中必须包含、、三个视图(View),其中后面两个标签是前面一个标签的子标签,表示tab页的选项卡,相当于菜单页,表示显示内容的区域。1.自定义底部导航栏布局由于TabWidget不方便自定义布局,因此
2016-11-25 15:16:48
1832
1
原创 传统 View 动画(Tween/Frame)
Tween 动画主要有 4 中:缩放、平移、渐变、旋转 1.1 set一个持有其它动画元素的容器 , , ,或者其它 元素<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:fromAlph
2016-11-18 16:16:41
280
原创 Notification详解以及点击消除
1.在通知栏生成通知 // 创建一个NotificationManager的引用 NotificationManager notificationManager = (NotificationManager) ac.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
2016-11-17 15:00:43
7516
原创 拍照/相册选择图片剪切后设置为头像
在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会将全尺寸的图像返回给调用的Activity,一般情况下,有可能返回的是缩略图,比如120*160px。这是为什么呢?这不是一个Bug,而是经过精心设计的,却对开发者不透明。以我的小米手机为例,摄像头800W像素,根据我目前设置拍出来的图片尺寸为3200*2400px。有人说,那就返回呗
2016-11-16 21:13:52
412
原创 Android系统中的.apk文件和dex文件
*.apk文件APK是Android Package的缩写,即Android安装包。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件组合成一个应用程序包(APK)。Dex是Dalvik VM executes的全称,即Android Dalvik执行程序。META
2016-10-18 16:30:21
425
原创 判断程序在后台运行还是前台
public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<Activ
2016-09-02 15:06:08
920
原创 获取数字签名(.keystore)SHA1、MD5值
1.运行进入控制台2.定位到.android文件夹下,输入cd .android.android文件夹为存放签名证书文件的地方3.输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书密钥口令是android,其中keytool为jdk自带工具;debug.keystore为Android 签名证书文件
2016-08-09 15:07:20
6824
原创 Android Studio
1.工程结构工程的结构和 Eclipse上的不同,src下分为java和res。AS是基于idea,而idea和eclipse有大的区别,有好处也有不好的地方,在一段时间里,idea被认为是开发java最好用强大的ide工具,所以AS新建的时候有new application(应用)和new module(模块)开发。idea没有工作空间这样的说法。具体说就是:android studio是单工程
2016-07-25 17:22:51
323
原创 ListView优化
1.在adapter中的getView方法中尽量少使用逻辑2.尽最大可能避免GC当你创建了大量的对象的时候,GC就会频繁的执行,所以在getView()方法中不要创建很多的对象,最好的优化是,不要在ViewHolder以外创建任何对象,如果你的你的log里面发现“GC has freed some memory”频繁出现的话,那你的程序肯定有问题了。3.滑动的时候不加载图片4.将ListView的s
2016-07-21 11:20:50
353
原创 Eclipse 搜索某一条字符串
选中需要搜索的项目,ctrl+H弹出搜索对话框,如下: 选择File Search,在Containing text中输入需要搜索的字符串, 在Scope 中选择 Selected resource就可以在选择的项目中搜索这字符串了。如果Search对话框中没有File Search: window->preferences->General->keys。找到File Search(有搜索框
2016-07-20 10:11:51
5854
仿手机通讯录
2016-01-08
按钮点击水波纹效果
2016-01-04
ViewPager+AtomicInteger实现广告轮播
2015-12-30
可伸缩的TextView
2015-10-16
不规则区域点击事件处理
2015-09-30
AutoCompleteTextView联想输入
2015-09-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人