自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 资源 (18)
  • 收藏
  • 关注

原创 泛型中extends和super的区别

泛型的定义泛型的定义:泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。泛型的一些基本术语以ArrayList和ArrayList做简要介绍:整个ArrayList称为泛型类型Array...

2019-04-03 17:42:48 1181 1

原创 抽象类和接口区别

抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。abstract class A{//定义一个抽象类 public void fun(){//普通方法 ...

2019-04-03 16:40:12 175

原创 什么是内部类?内部类的作用

在java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫内部类,外面的类就叫外部类。在这情况下,这个内部类可以看做外部类的一个成员。内部类好处1.隐藏你不想让别人知道的操作,也即封装性。public interface Contents { int value();} public interface Destination { String readLabel...

2019-04-03 11:01:44 9434 1

原创 String、StringBuffer和StringBuilder的比较

String:查看源码得知,String类的声明是:public final,所以可以很清楚的知道,fianl的话是改变不了的,所以,如果我们用String来操作字符串的时候,一旦我们字符串的值改变,就会在内存创建多一个空间来保存新的字符串,可想而知,一旦遇到复杂的操作,用String是多么低效率的事啊!所以,一般涉及到字符串操作的,我们一般使用StringBuffer或者StringBuild...

2019-04-02 17:47:37 148

原创 面向对象的三大基本特征:封装、继承、多态

1.封装封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。 类、方法其实也是封装的体现;好处:将变化隔离;便于使用;提高重用性;安全性。封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。2.继承继承:把多个类中相同的内容提取出来,定义到一个类中。然后让这多个类和这个类产生一个关系,使这多个类具备该类的数据了。 这种关系叫:继承。继承是为了重用父类代码...

2019-04-02 17:28:51 473

原创 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 364

原创 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 235

原创 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 552

原创 自定义控件学习笔记(六)绘制顺序

Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。1 super.onDraw() 前 or 后?自定义绘制最基本的形态:继承 View 类,在 onDraw() 中完全自定义它的绘制。绘制代码写在 super.onDraw() 的上面还是下面都无所谓,甚至,你把 super.onDraw() 这行代码删掉都没关系,效果都是一样的——因为在 View 这个类里,onDraw()

2017-11-27 16:34:57 243

原创 自定义控件学习笔记(六)绘制顺序

Android 里面的绘制都是按顺序的,先绘制的内容会被后绘制的盖住。1 super.onDraw() 前 or 后?自定义绘制最基本的形态:继承 View 类,在 onDraw() 中完全自定义它的绘制。绘制代码写在 super.onDraw() 的上面还是下面都无所谓,甚至,你把 super.onDraw() 这行代码删掉都没关系,效果都是一样的——因为在 View 这个类里,onDraw()

2017-11-27 16:29:31 336

原创 自定义控件学习笔记(五)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 534

原创 自定义控件学习笔记(四)文字的绘制

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 1451

原创 自定义控件学习笔记(三)Paint详解下

2.7 setMaskFilter(MaskFilter maskfilter)为之后的绘制设置 MaskFilter。上一个方法 setShadowLayer() 是设置的在绘制层下方的附加效果;而这个 MaskFilter 和它相反,设置的是在绘制层上方的附加效果。 到现在已经有两个 setXxxFilter(filter) 了。前面有一个 setColorFilter(filter) ,是对

2017-11-17 16:21:52 474

原创 自定义控件学习笔记(三)Paint详解

Canvas 的 drawXXX() 方法配合 Paint 的几个常用方法可以实现最常见的绘制需求;而如果你只会基本的绘制, Paint 的完全功能的掌握,能让你更进一步,做出一些更加细致、炫酷的效果。Paint 的 API 大致可以分为 4 类: 颜色 效果 drawText() 相关 初始化1 颜色Canvas 绘制的内容,有三层对颜色的处理: 1.1 基本颜色 Paint 设置颜色

2017-11-16 17:59:14 1277

原创 自定义控件学习笔记(二)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 9733

原创 自定义控件学习笔记(一)Canvas 的 drawXXX() 系列方法

Canvas 的 drawXXX() 系列方法及 Paint 最常见的使用Canvas.drawXXX() 是自定义绘制最基本的操作。掌握了这些方法,你才知道怎么绘制内容,例如怎么画圆、怎么画方、怎么画图像和文字。组合绘制这些内容,再配合上 Paint 的一些常见方法来对绘制内容的颜色和风格进行简单的配置,就能够应付大部分的绘制需求了。Canvas 类下的所有 draw- 打头的方法,例如 dra

2017-11-15 17:11:16 2180 1

原创 Android内存优化:Reckon(二)

了解自己应用的内存使用情况是很有必要的。如果当内存使用过高的话就需要对其进行优化,因为更少的使用内存可以减少ANDROID系统终止我们的进程的几率,也可以提高多任务执行效率和体验效果。下面从系统内存(system ram)和堆内存(heap)两个方面介绍一些查看和计算内存使用情况的方法:System Ram(系统内存)观察和计算系统内存使用情况,可以使用Android提供给我们的两个工具procst

2017-10-12 18:00:23 542

原创 Android内存优化(一)

RAM(random access memory)随机存取存储器。说白了就是内存。一般Java在内存分配时会涉及到以下区域:寄存器(Registers):速度最快的存储场所,因为寄存器位于处理器内部,我们在程序中无法控制栈(Stack):存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆(Heap):堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自

2017-10-12 14:58:29 194

原创 Http协议

1、HTTP的历史1、HTTP的概念: HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。 它是一个应用层协议,承载于TCP之上。由请求和响应构成,是一个标准的客户端服务器模型2、HTTP的发展历史: 作为Web文档

2017-10-11 17:09:51 409

原创 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 518

原创 AndroidStudio翻译插件:ECTranslation

今天给大家推荐一款名为ECTranslation的Android Studio翻译神器。安装File->Settings->Plugins,选择按钮Browse Repositories搜索ECTranslation然后安装,重启AndroidStudio,插件就安装好了。修改快捷键File – Settings – Keymap – 搜索 translate 双击或鼠标右击,先Remove掉原

2017-09-05 17:39:02 428

原创 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 293

原创 Eclipse修改项目名称

1:修改项目目录下:.project文件<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>GZELearning</name>2.选择安卓项目,按F2,修改名称

2017-05-05 09:59:29 307

原创 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 544

原创 设置渐变背景色

//设置从上到下的渐变色 GradientDrawable gradient=new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,new int[]{Color.RED,Color.YELLOW}); getWindow().setBackgroundDrawable(gradient);

2017-01-17 16:56:31 378

原创 将可视化组件保存在png图像文件中

View view = getLayoutInflater().inflate(R.layout.activity_main, null); //打开图像缓冲 view.setDrawingCacheEnabled(true); //必须调用measure和layout方法才能成功保存可视组件的截图到png图像文件 //测量View大小

2017-01-17 16:55:09 335

原创 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 429

原创 遍历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 383

原创 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 339

原创 上拉隐藏/下拉显示 头部和底部导航栏

给listview添加手机监听,根据滑动位置,确定导航栏的隐藏和显示。 mlistView.setOnTouchListener(new View.OnTouchListener() { private float mEndY; private float mStartY; private int direction;

2016-11-25 17:37:23 4175

原创 TabActivity自定义底部导航栏

TabActivity本身继承自ActivityGroup,主要功能是实现多个activity或者view之间的切换和显示,要使用该类必须新建一个类来继承TabActivity,并且该类的xml配置文件中必须包含、、三个视图(View),其中后面两个标签是前面一个标签的子标签,表示tab页的选项卡,相当于菜单页,表示显示内容的区域。1.自定义底部导航栏布局由于TabWidget不方便自定义布局,因此

2016-11-25 15:16:48 1779 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 257

原创 Notification详解以及点击消除

1.在通知栏生成通知 // 创建一个NotificationManager的引用 NotificationManager notificationManager = (NotificationManager) ac.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

2016-11-17 15:00:43 7357

原创 拍照/相册选择图片剪切后设置为头像

在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会将全尺寸的图像返回给调用的Activity,一般情况下,有可能返回的是缩略图,比如120*160px。这是为什么呢?这不是一个Bug,而是经过精心设计的,却对开发者不透明。以我的小米手机为例,摄像头800W像素,根据我目前设置拍出来的图片尺寸为3200*2400px。有人说,那就返回呗

2016-11-16 21:13:52 382

原创 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 375

原创 判断程序在后台运行还是前台

public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<Activ

2016-09-02 15:06:08 877

原创 获取数字签名(.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 6762

原创 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 300

原创 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 318

原创 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 5660

框架整合代码

KJFrame框架整合,包含刷新

2017-01-03

MVC模型demo

MCV模型的demo示例

2016-04-18

仿手机通讯录

主要实现功能:1、获取手机通讯录内容已列表的形式展示。2、屏幕右边有26字母的标杆,触摸标杆的任一字母,该字母颜色、字体改变,同时屏幕上显示该字母,屏幕中展示首字母为该字母的通讯录名单。 3、点击通讯录列表的某一项,字母标杆上该字母的颜色、字体改变,频幕显示该字母3秒。4、滑动该listview,当活动结束时,屏幕最上面的联系人的首字母对应的字母标杆颜色、字体改变。

2016-01-08

按钮点击水波纹效果

百度手机卫士或者360手机卫士,里面的按钮点击效果都是这样的,我们自己实现一个layout,在layout中捕捉事件,并对事件进行相应的处理,在down事件中寻找当前用户点击的是哪个view,找出view所在的矩形区域,将一个透明的圆环绘制到这个矩形区域

2016-01-04

自定义下拉列表

自定义下拉列表,通过PopupWindow实现下拉列表,下拉列表的宽度和下拉框的宽度一样,使下拉列表看起来更整体。

2016-01-04

仿苹果滑动开关

Android自定义的滑动开关是方形的,不够美观,仿苹果滑动开关做的自定义控件,可以修改开关的样式。

2015-12-31

时间选择器

自定义控件继承ListView效果类似WheelView,可以实现循环选择。样子可以自定义,未选择区域和选择区域都可以自定义颜色

2015-12-31

侧滑菜单+广告轮播

解决侧滑菜单与广告轮播的滑动冲突事件,本人亲自测试实验可行。

2015-12-30

ViewPager+AtomicInteger实现广告轮播

利用ViewPager实现的广告轮播,没有触摸事件的时候可以定时轮播广告,有触摸事件实施触摸事件。自动轮播使用的是线程加AtomicInteger的方式实现。

2015-12-30

可伸缩的TextView

1.当显示的内容不多于2行时,和普通的TextView一样 2.当显示的内容大于2行时,仅仅显示两行,并且没有显示完的内容使用省略号代替,并显示向下箭头表示还有内容没有显示全当用户点击TextView时,内容全部展开,当用户再次点击时,TextView又变为压缩模式

2015-10-16

适用于长文本的TextView

适用于长文本的TextView,使用自定义控件

2015-10-14

底部导航(TabHost)可滑动切换

继承TabActivity实现底部导航功能,自定义导航栏样式,可以滑动切换选项卡

2015-10-13

不规则区域点击事件处理

各个不规则区域分别做一张图,每张图都只有一种颜色(准确说是一定范围的颜色),并且每张图的大小都是一样的,颜色的位置相对效果图是一致的,其他用透明像素,这样做是为了方便贴图。然后点击的时候判断点击的颜色是否是透明就可以了,如果是透明那么不处理点击事件,如果不是透明那么需要处理事件。

2015-09-30

AutoCompleteTextView联想输入

本文使用AutoCompleteTextView实现联想输入,实现了中文对应的拼音搜索、中文首字母搜索和中文搜索。下拉菜单使用了自定义的控件,可以自己设计样式,方便了项目中使用。自定义adapter实现Filterable接口,实现中文对应的拼音搜索、中文首字母搜索和中文搜索。

2015-09-29

简单的播放视频

运用VideoView实现了简单的播放MP4格式的视频,由于VideoView的不足,只能胜任播放简单的动画或者开机视频。

2015-09-21

简单的音乐播放

MediaPlayer的简单用法实例,简单实现了播放MP3 音乐。

2015-09-21

仿QQ侧滑菜单

高仿QQ侧滑菜单,实现侧滑菜单的点击事件

2015-09-16

仿淘宝九宫格

模仿支付宝钱包首页中带有分割线的GridView

2015-09-08

空空如也

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

TA关注的人

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