自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (3)
  • 收藏
  • 关注

原创 LayoutInflater学习(二)之创建布局View

这篇是在上篇的基础上继续学习LayoutInflater,上篇主要讲了LayoutInflater是怎么解析布局的,但是并没有去仔细地说明LayoutInflater创建View的过程,这篇就补上这部分。

2023-01-10 22:57:44 358 1

原创 LayoutInflater学习(一)之布局解析

原因分析:通过观察上面第3种情况时的源码就可以知道,当 root 为null时,我们通过LayoutInflater的 inflate 方法加载布局时,在 inflate方法中创建完成xml中最外层的View时,并没有为该View设置布局参数就直接返回了,所以此时 xml 布局中最外层布局的参数LayoutParams是无效的,也就是我们在 xml 中给最外层View设置的宽、高的参数是无效的。LayoutInflater是位于 "android.view" 包下的一个抽象类,同样它也是一个系统级服务。

2023-01-10 22:55:06 424

原创 setContentView学习(一)

setContentView DecorView创建

2022-12-24 10:04:35 1257

原创 安卓PorterDuffXfermode之正片叠底 PorterDuff.Mode.MULTIPLY

Paint#setXfermode()接口是在绘制时设置画笔的图形混合模式的,下面是官网的介绍:setXfermodepublic Xfermode setXfermode (Xfermode xfermode)Set or clear the transfer mode object. A transfer mode defines how source pixels (generate by a drawing command) are composited with the destin

2022-12-20 06:05:10 769

原创 Android View绘制 Canvas学习

今天记录一个关于Canvas绘制的小demo,非常简单的一个小功能,在屏幕上绘制一个绿色的矩形框,当手指点击区域在矩形框内部时,矩形框由绿色变为红色,先看下效果图完整实现代码及相关笔记如下package com.lollo.custom.canvasdemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphic

2022-01-08 19:56:16 1651

原创 RecyclerView缓存机制源码学习

RecyclerView缓存数据结构RecyclerView相比ListView缓存机制更为复杂些,它一共有四级缓存,RecyclerView中缓存相关的代码在它的内部类 Recycler里,先来看一下Recycler中相关的数据结构第一级:mChangedScrap(离屏) 与 mAttachedScrap(未离屏) ---》 回收相关方法:recycler.scrapView(view);第二级:mCachedViews---》 默认大小为2 ---》 回收相关方法:recycler.rec

2021-03-05 09:59:07 269 2

原创 ListView缓存机制源码学习

文章参考:https://blog.csdn.net/guolin_blog/article/details/44996879ListView缓存机制所需的数据结构 class RecycleBin { private View[] mActiveViews = new View[0]; private ArrayList<View>[] mScrapViews; private ArrayList<View&

2021-02-28 11:18:26 121

原创 Fragment使用过程中遇到的一些问题

先看下 Fragment 的基础用法,这是Fragment动态用法四部曲1.获得FragmentManager对象,通过getSupportFragmentManager()2.获得FragmentTransaction对象,通过fm.beginTransaction()3.调用add()方法或者repalce()方法加载Fragment;4.最后调用commit()方法提交事务FragmentManager fragmentManager = getSupportFragmentManag

2021-02-24 13:32:14 804

原创 Fragment源码学习(一)

Fragment源码学习首先看一下 Fragment 的基本用法 FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(R.id.frameLayout, Bug5Fragment.newIntance(), B

2021-02-21 13:36:03 232

原创 Glide 的缓存机制

Glide 的缓存机制,需要了解 LruCache 和 DiskLruCache,可以参考以下两篇博文https://blog.csdn.net/guolin_blog/article/details/28863651下面我们通过写一个阉割版的Glide来了解一下Glide的缓存机制首先看一下Glide的一行代码经典用法private final String IMAGE_URL = "http://p1.pstatp.com/large/166200019850062839d3";

2021-01-20 17:12:18 277 2

原创 Android LayoutInflater inflate方法学习

结合Andorid 9.0 的代码,记录一下学习过程,大多时候是用的下面这个方法public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) { return inflate(resource, root, root != null); }还有就是重载的另一个方法:public...

2020-01-18 21:28:21 136

原创 Android 简单的自定义View继承ViewGroup代码学习分享(一)

注明:该实例取自Android开发艺术探索在这里记录一下自己学习过程中遇到的一些问题与大家分享,也方便自己以后查阅,水平有限,欢迎批评指正。请看一下运行效果下面是核心代码实现,其中的笔记是我测试过程中遇到的一些问题@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec...

2020-01-14 19:23:12 240

原创 Activity 的 Window 创建主要流程

首先是在 ActivityThread 的 performLaunchActivity() 方法中创建Activity实例,并调用 Activity 的 attach 方法xref: /frameworks/base/core/java/android/app/ActivityThread.javapackage android.app;......public final cla...

2020-01-13 13:41:05 143

原创 Android 实现简单的悬浮窗按钮(二)

这篇主要分析 Window 的工作机制,WindowManager 添加 Window (View) 的主要流程以下是Android9.0 的源码首先看一下 WindowManager.javaxref: /frameworks/base/core/java/android/view/WindowManager.javapackage android.view;.........

2020-01-13 09:57:33 740

原创 Android 实现简单的悬浮窗按钮(一)

先来看一下实现效果吧功能较为简单,直接贴出主要实现代码:public class MainActivity extends AppCompatActivity implements View.OnClickListener,View.OnTouchListener{ private WindowManager.LayoutParams mParams; private...

2020-01-12 17:03:35 5803 3

原创 Handler如何通过sendMessage(Message msg)方法将新消息加入当前消息队列(二)

这里假设我们是通过Handler 的 sendMessage(Message msg) 来发送消息的首先进入 sendMessage 方法 public final boolean sendMessage(Message msg) { return sendMessageDelayed(msg, 0);//注意第二个参数传入的是整数 0 ...

2020-01-03 13:38:20 1052 1

原创 Handler如何通过sendMessage(Message msg)方法将新消息加入当前消息队列(一)

首先需要先理清 Handler、MessageQueue、Looper 之间的关系。我们使用Handler的时候(UI主线程)一般是通过以下两种方法去创建一个Handler实例1. 最常用的方法:方法1Handler mHandler =new Handler(){ @override public void handleMessage(Message msg){ ...

2020-01-03 10:26:47 2139

原创 简单的Socket通信实例:实现Android客户端与PC服务端的简单通信

今天来写一个使用Socket通信的小小实例实现效果:快看动图效果说明:当点击发送时,是先将文本内容发送到本地服务器,之后再从服务器中获取显示到TextView中的PC服务端实现:package com.lollo.server;import java.io.DataInputStream;import java.io.DataOutputStream;impor...

2019-11-03 20:16:14 745 3

原创 蓝桥杯 基础练习 十六进制转八进制

//下面的代码实现部分全部放在了main函数中,看起来有些不清晰package jinzhizhuanhuan2;/* * * 测试成功。 * 经验:当修改了代码中的某个变量的名字是,特别注意:所有涉及到该变量的地方都要修改 * 遗漏任何一处,可能运行出错!!! */import java.util.Scanner;public class HextoOcalPrac {

2017-03-01 12:42:21 472

原创 蓝桥杯 基础练习 十六进制转十进制 java

package jinzhizhuanhuan;import java.util.Scanner;public class HextoDecimal { public static int compare(char ch){//将A~F转换为对应的十进制数 int[]a=new int[75]; int k=65,i=10;//A的assic码为65 while(i<16)a[k

2017-02-25 13:24:56 2560

原创 蓝桥杯 算法训练 表达式计算 Java

package algortest;/* * 思路1:定义一个char型变量以单个字符为单位从键盘接受一个字符,然而java只能从键盘接受String *      型的字符串,此方法实行起来较为困难 *  * 思路2:定义一个String型变量,先从键盘把要计算的表达式全部接收(比如:123*(8-9)) *      然后再逐一的扫描改表达式字符串,该方法可行! *

2017-02-23 21:59:15 1016

原创 杭电HOJ1034 Candy Sharing Game 的一种解法

#include#include#define max 1005int a[max];int istop(int*s,int n){ int ok=1; for(int i=1;i {  if(s[0]!=s[i])ok=0;//只要有一个糖果数不等就为0   if(!ok)break; } /*for(int i=0;i      printf

2016-11-09 13:18:10 388

原创 杭电HDOJ 1029 Ignatius and the Princess IV

#include#include#define max 1000000int a[max];int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        memset(a,sizeof(a),0);        int tatol=(n+1)/2;        int tem,num;

2016-11-07 12:58:55 355

原创 HDOJ杭电oj 1021Fabonacci Again 的一个愚蠢而又快速的方法

//代码只有如下几行#includeint main(){    int n;    while(scanf("%d",&n)==1)    {        if(n%4==2)printf("yes\n");        else printf("no\n");    }    return 0;}//上面的代码是通过下面的代码找出

2016-11-05 12:41:02 333

原创 杭电HOJ 1013 Digital Roots

import java.math.BigInteger;import java.util.Scanner;public class Main{ public static BigInteger seperate(BigInteger n){ BigInteger sum=BigInteger.ZERO; while(!(n.divide(BigInteger.TEN).equa

2016-11-01 21:14:01 303

原创 杭电HDOJ1012 u Calculate e

#includeint f(int n){ return n}int main(){ const int n=9; double sum=0; printf("n e\n- -----------\n"); for(int i=0;i {  //printf("1/f(%d)=%f\n",i,1/(double)f(i));  //if(!i)

2016-11-01 18:01:34 283

原创 HDOJ1005 Number Sequence

#includeint a,b;int f(long n){ return n>=3?(a*f(n-1)+b*f(n-2))%7:1;}int main(){ long n; while(scanf("%d%d%ld",&a,&b,&n)==3&&(a||b||n)&&a {  //int k;  if(a  if(n%16==0)n=1

2016-11-01 14:49:23 247

原创 杭电HOJ 1004 Let the Balloon Rise

import java.util.Scanner;public class Main{ public static void main(String[]args){ Scanner cin=new Scanner(System.in); while(cin.hasNext()){ int a=cin.nextInt(); if(a==0||a1000)break;

2016-11-01 12:34:34 457

原创 杭电 HDOJ 1008 Elevator

#include#define max 105int a[max],sum;int main(){ int n; while(scanf("%d",&n)==1&&n) {  //int tem;  sum=0;  for(int i=0;i  {   scanf("%d",a+i);   //a[i]=tem;   }  if(a[0]

2016-11-01 12:31:04 279

原创 UVa489 Hangman Judge的不同实现方法

#include#include#define max 20char cs[max],ys[max];int win,lose;void guess(char c[],char y[]){ int chance=7;//猜测错误的机会 int left=strlen(c);//剩余要猜测的词数  for(int i=0;i {  int wrong=1;

2016-10-27 18:52:56 297

原创 引入包名后的java编译命令注意事项!!

package lollo;public class Hello{ public static void main(String[]args){System.out.println("HelloWorld!!!");}}//特别注意!!"javac -d . Hello.java"命令中“-d”“.”“Hello.java”他们中间都有一个空格!!不能忽略,否则编译

2016-09-08 12:11:00 521

View_MyXmlParser.zip

通过打Log来追踪一下Android是怎么通过XmlPullParser来一步步的解析 我们所定义的布局文件的

2020-01-18

HorizontalScrollViewEX.zip

实现一个自定义View,可以实现左右滑动,该View里装了一个ListView 需要解决滑动冲突的问题

2020-01-14

WindowTest3_done.zip

悬浮窗源码,主要是通过这个例子,了解一下 WindowManager的用法 了解Window的工作机制,怎样通过 WindowManager添加一个Window

2020-01-12

空空如也

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

TA关注的人

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