- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 自定义时钟View
public class ClockView extends View { Paint paint; int circleRadius; public ClockView(Context context) { super(context); initview(); } public ClockView(Context context, @Nullable AttributeSet attrs) { super...
2021-11-30 17:21:10 201
原创 自定义波浪进度View
public class WaveView extends View { Paint paint; int circleRadius; int cirX,cirY; int padding=30; float progress=0.7f;//进度 int startX=0; int waveWidth=0;//波浪宽度 int curWaveHeight=50;//波浪高度 public WaveView(Conte...
2021-11-30 17:19:03 114
原创 okhttp源码解析(一)
使用okhttp来作为项目的网络请求库,这个估计是很多android开发者的选择。怎么用okhttp发起一个请求的代码网上一大堆,很简单。但是要理解它是怎么完成一次网络请求过程的,就必须读人家的源码,它的代码量还是很大的,功能也很庞大。只有读过源码后,用起来才更踏实,也能知道在网络请求的时候,我们还可以对它怎么优化,作为一个知名项目,它的代码架构设计也是值得我们学习的地方。看这种功能巨复杂的库,还
2017-12-21 17:59:48 460
原创 彻底解决监听Scrollview滑动暂停问题
项目中有个功能要监听Scrollview的滑动暂停状态,百度了一下,都是通过handler机制来比较getScrollY()值来实现,这种方式还是有bug的,在滑动中停止为撒手状态下,或者在底部,头部的时候有监听不到的情况。后来我就想着Scrollview内部有没有滑动停止的标志呢。阅读Scrollview源码之后发现还真有!!!这个滑动事件肯定和onTouchEvent(MotionEvent e
2017-11-21 09:33:31 3351
原创 android 图表控件的实现(二)
在这篇博客中,将实现混合柱状图 在上一篇博客中讲到过,所有的图表类都只要重载 abstract protected void startContent(Canvas canvas);//绘制图表内容 abstract protected void drawXaxis(Canvas canvas);//绘制X轴 abstract protected void drawY
2017-08-16 16:20:10 884
原创 android 图表控件的实现(一)
前段时间公司要做图表,本来想用个三方库就完事的,然而有很多个性化的实现,那就自己动手吧。先上图 实现的效果感觉还行,再有什么特殊的需求,自己写的东西,改起来也方便。接下来是把图表功能涉及到的类都先抽象出来。ChartData包下是绘图时要用到的数据。 Xvalues:X轴下每个点要绘制的东西,如上面柱状图中绘制的月份数据。 Yvalu
2017-08-14 16:13:51 2907 1
原创 Fragment懒加载机制
把Fragment放到Viewpager的时候,由于FragmentPagerAdapter缓存的原因,它会创建当前的Fragment和当前旁边两个的fragment。看下图 当我一进入这个页面的时候,当前页是“”全部“Fragment,左边没有,右边有一个“简餐便当”Fragment,它也会加载出来07-21 16:24:27.945 23014-23014/? V/mytextframent全
2017-07-21 17:09:04 454
原创 android报表控件,任意方向联动
任意方向滑动中间的那块View,上面和左边的滚动条将联动。还支持回弹效果。 先说说这个布局文件总的思路是获取中间那个自定义View在x,y轴上滚动的偏移量,然后让上面和左边的滚动条滚动相同的偏移量就行。主要是如何实现中间这个自定义的View。public class ReportScrollview extends LinearLayout {private Scroller mscroller
2017-07-11 15:34:49 1151
原创 从源码分析一次简单的volley请求
从源码分析一次简单的volley请求RequestQueue mRequestQueue = Volley.newRequestQueue(context);StringRequest stringRequest = new StringRequest(url, new Listener<String>() { @Override
2017-07-05 15:17:04 281
原创 二叉查找树java实现
public class Node {public int data;public Node left;public Node right;public Node(int data, Node left, Node right) {this.data = data;this.left = left;this.right = right;}publ
2017-03-29 16:59:01 348
原创 获取ImageView中图片的坐标
Matrix matrix = getImageMatrix();RectF rectF = new RectF();Drawable drawable = getDrawable();if (drawable != null) { rectF.set(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight
2016-11-11 14:54:55 5243
原创 Android 截图控件实现
整个控件代码贴出,使用的时候先调用imageview.setSrcImageMap(bitmat),伸缩移动选中截图区域后调用shotScreen()返回截取的bitmappublic class shotScreenImageview extends ImageView implements OnGlobalLayoutListener, OnScaleGestur
2016-11-11 11:20:14 706
原创 servlet 3.0上传图片
服务端代码,主要是用了servlet3.0中的Part类来接受并保存文件,一开始没有加@MultipartConfig注解,一直不成功,唉。。。@MultipartConfig(fileSizeThreshold=1024*1024*10, // 10 MB maxFileSize=1024*1024*50, // 50 MBmaxRequestSize=1024*
2016-11-09 16:50:26 324
原创 自定义控件文字居中
绘制文字的x,y坐标是baseline左端点的坐标,原来一直理解为了文字的左上角,今天亲测才发现,文字的x坐标号计算:(控件宽度-文字宽度)/2文字的y坐标计算:控件高度/2+距离baseline的那段距离(-(decent+ascent)/2)android绘制文字时以baseline为y轴0坐标线,向上为负,向下为正,所以文字的一半正好是(decent+asecnt)/2,文字
2016-11-08 10:17:19 1423
原创 java序列化
对象序列化时,如果对象里的属性也是个引用类型,则这个引用变量也必须实现序列化否则不在序列化。 序列化时,它会先检查此对象是否序列化过,如果没有,则把对象写入流,并且编号。当同一个对象再次序列时,写入的只是原来分配的编号,这样就保证原来是同一个对象的读取出来后还是同一个对象。 这样的话,如把一个对象第一次写入后,再改变了对象的属性,然后再次序列化,因为再次序列化只是写入
2016-11-07 17:52:55 310
原创 edittext取消,获得软件盘的设置
通常情况下,含有edittext的Activity一展现时都会获得焦点,触发软件盘,如果软件盘不出来,可在配置文件对应的Activity里放下面设置 android:windowSoftInputMode="stateVisible"如果不想一开始就获得焦点和展现软键盘可以在Edittext的跟布局设置以下属性android:fo
2016-11-07 17:36:13 241
原创 RGBA颜色制作图片特效
Bitmap bitmap=Bitmap.createBitmap(src.getWidth(), src.getHeight(),Config.ARGB_8888);Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);Canvas canvas=new Canvas(bitmap);//设置颜色的色相ColorMatrix hue
2016-11-07 17:35:02 1273
原创 android实现xml数据的解析
尖括号里的“Family”,"Father","Mother","Son"是属于标签(tag)而“name”,“age”的是各个表签对应的属性 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); try { DocumentBuild
2016-11-07 17:33:59 261
原创 读取手机联系人
Cursor cursor=context.getContentResolver().query(Phone.CONTENT_URI,null,null,null,null); cursor.moveToFirst(); while(!cursor.isAfterLast()){ int nameIndex=cursor.getCo
2016-11-07 17:32:52 244
原创 从textview中获取bitmap
Textview tv=new TextView(context);tv.setText("zhongge");tv.setCompoundDrawablesIntrinsicBounds(drawable,null,null,null);tv.setDrawingCacheEnabled(true);Bitmap b=Bitmap.create(tv.getD
2016-11-07 17:31:51 527
原创 Intent 的匹配模式
Intent实际上有android框架层的一个组件服务管理(一个线程),每次发起意图(Intent)组件服务管理器都会获取发起者的信息(action,componnet,cateory),然后在配置文件中找出注册的组件(activity,service,Reciver。。。)的过滤信息,然后进行匹配。intent需要匹配的前提是采用的是隐式调用,显式
2016-11-07 17:30:58 312
原创 AsyncTask类详解
AsyncTask是一个抽象类,AsyncTask实现类里要有三个泛型参数第一个是传入参数的类型,第二个是任务执行进度的值类型,Result是任务执行完时的返回值AsyncTask必须在执行完一个任务后才能执行下一个任务只能执行一次,多次执行触发异常。常用的一些方法getStatus()获取Asyn
2016-11-07 17:29:50 491
原创 用TextView显示富文本
下面这个方法是可以给source字符串加上横杠,淘宝中显示过去的价格就是用这个方法。public SpannableString getHenggangString(String source){ SpannableString henggangString=new SpannableString(source); henggangS
2016-11-07 17:28:51 5118
原创 onMeasure()方法及控件的绘制
在这个方法中,super.onMeasure()调用后将可以得到控件的宽高。控件的onMeasure(),Onlayout()方法会被执行多次,注意这里面执行的逻辑不要被多次执行了。要绘制控件,分为两步1.在onmeasure()方法中绘制好控件的大小2.在lonlayout方法里布局好控件的位置用view.layout(
2016-11-07 17:27:40 373
原创 ValueAnimator的使用
valueAnimator的作用是可以逐一获得你设置好的值, 获得这些值后,在利用它实现你想要的效果。 我用这个动画改进了那个扇形百分比控件,效果十分炫酷。valueAnimator=ValueAnimator.ofInt(0,sweepAngle);val
2016-11-07 17:26:43 354
原创 图片的压缩
在前面的GGBA颜色制作特效这篇笔记中,说了图片由像素组成,像素由色相,饱和度,亮度组成。当图片的像素不变时,把它读取到内存中不是不会节省开销的。这里有一个压缩质量的方法来压缩图片,要把图片压缩到100k以下public static void compressBmpToFile(Bitmap bmp,File file){ B
2016-11-07 17:25:27 250
原创 handler机制
Handler作用1:更新ui作用2:发送处理消息。后台工作线程不能更新ui,需要handler传递消息到主线程来更新ui创建一个消息 第一种:new Message() 第二种: handler.obtain()在这个方法中,它很把消息的发送目标target设置为handler本身。 发送
2016-11-07 17:22:21 290
原创 最大子串搜和索算法
基于的一个理论; 在一个数组中,任意小于0的子串中的子串都不可能是这个数组中的最大和子串 int[] source={-34,4,-35,5,6,75,34,-23,5,-3}; int maxNum=0; int sequenceNum=0; int j=0; int start=0; int end=0; for(int i=0;i
2016-11-07 17:21:04 420
原创 二分查找算法
int[] source={-34,4,5,56,75,345,353,555,666}; int searchKey=555; int low=0,high=source.length-1; int mid;while(low mid=(low+high)/2;
2016-11-07 17:17:05 230
原创 插入排序
把后面的数一个一个插入到以前排好的数列中 int[] source={-34,4,5,56,75,345,353,555,666}; int temp=0; for(int i=1;i temp=source[i]; for(int j=i;j>0&
2016-11-07 17:15:36 215
原创 希尔排序
希尔排序是改进的插值排序。在一列数中,先把数列内一定距离(总长度的一半)的数排序,接着缩小长度再排序,直到长度为1 int[] source={-34,4,5,56,75,345,353,555,666}; int temp=0; for(int gap=source.length/2;gap>=1;gap=gap/2){ Sy
2016-11-07 17:14:01 219
原创 快速排序
public static void quickSorted(ArrayList lists) { if (lists.size() > 0) { ArrayList larger = new ArrayList(); ArrayList same = new ArrayList(); ArrayList smaller
2016-11-07 17:13:12 228
原创 enum枚举类型
从下面的例子可以看出枚举类型中声明的常量的类型和本枚举类型是同一种类型枚举和其他的类型用法没什么区别枚举的一些常识:在创建枚举类型时已经默认继承Enum,所以他不可以再继承其他类型但是可以实现任意个接口枚举的构造方法都是私有的常用的方法
2016-11-07 17:11:01 232
原创 代理模式
把一些不想让客户端访问的功能从A对象中提取出来,放到一个接口中B中。A对象实现接口B;写一个proxy代理类,实现接口B。在代理类中存一个A对象的引用。要进行使用A对象的功能时,通过访问proxy类,实际上由proxy类里的A对象引用去实现真实的功能。public interface
2016-11-07 17:09:25 157
原创 泛型的理解和一些方法
泛型类可以接收所有类型的对象但定义时必须指定具体接收哪种对象,这样在泛型添加对象时如果发生添加的对象不是定义时指定的对象,编译时就会出错。以便于程序员及时修正错误。泛化类型作为参数存在于方法中,可以为功能相同,但只是数据结构不同的对象提供一个统一的操作。泛型中的子类问题class Animal{
2016-11-07 17:08:32 276
原创 访问者模式
这里实现与一个和名字差不多意思的模式实现看完例子再解释这个模式的作用见到领导问“领导好”,见到同事问“你好”public interface visitor{public void visit(leader l);public void visit(colleague c);}
2016-11-07 17:07:35 235
原创 java的io流
在java中,io流分为字节流和字符流。字节流在操作中以一个字节为单位进行io字符流在操作中以一个字符(两个字节)为单位进行io字节流分为inputStream和outputStream及其子类常用的方法是read(),write()read(byte[] bytes)//把字节读取到bytes数组中,返回值为实际读取到的字节数,
2016-11-07 17:05:45 185
原创 java反射机制
根据类类型,来获取构造方法,方法,字段等getConstructors(),getMethods(),getFields()这几个是获取public类型的getDeclaredConstructs,getDeclaredMethods,getDeclaredFields这是获取所有声明了的下面是介绍一些获取指定的构造方法,方法,字段
2016-11-07 17:04:49 221
原创 Thread类的解析和常识
Thread的构造方法public Thread(Runnable runnable);public Thread(ThreadGroup group ,Runnable runnale);public Thread(String name)public Thread(ThreadGroup group ,String name)public T
2016-11-07 17:03:45 2700
原创 代理模式
把一些不想让客户端访问的功能从A对象中提出来,放到一个接口中B中。A对象实现接口B;写一个proxy代理类,实现接口B。在代理类中存一个A对象的引用。要进行使用A对象的功能时,通过访问proxy类,实际上由proxy类里的A对象引用去实现真实的功能。public interface B{
2016-11-07 17:02:37 259
httpclient包
2016-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人