• 大小: 628KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: weixin  tag  

资源简介

微信 自定义标签代码,采用了flowlayout布局

资源截图

代码片段和文件信息

package com.zhd.tag;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;

public class FlowLayout extends ViewGroup
{

private static final String TAG = “FlowLayout“;


public FlowLayout(Context context AttributeSet attrs)
{
super(context attrs);
}

@Override
protected ViewGroup.LayoutParams generateLayoutParams(
ViewGroup.LayoutParams p)
{
return new MarginLayoutParams(p);
}

@Override
public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)
{
return new MarginLayoutParams(getContext() attrs);
}

@Override
protected ViewGroup.LayoutParams generateDefaultLayoutParams()
{
return new MarginLayoutParams(LayoutParams.MATCH_PARENT
LayoutParams.MATCH_PARENT);
}

/**
 * 负责设置子控件的测量模式和大小 根据所有子控件设置自己的宽和高
 */
@Override
protected void onMeasure(int widthMeasureSpec int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec heightMeasureSpec);
// 获得它的父容器为它设置的测量模式和大小
int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
int modeWidth = MeasureSpec.getMode(widthMeasureSpec);
int modeHeight = MeasureSpec.getMode(heightMeasureSpec);

// Log.e(TAG sizeWidth + ““ + sizeHeight);

// 如果是warp_content情况下,记录宽和高
int width = 0;
int height = 0;
/**
 * 记录每一行的宽度,width不断取最大宽度
 */
int lineWidth = 0;
/**
 * 每一行的高度,累加至height
 */
int lineHeight = 0;

int cCount = getChildCount();

// 遍历每个子元素
for (int i = 0; i < cCount; i++)
{
View child = getChildAt(i);
// 测量每一个child的宽和高
measureChild(child widthMeasureSpec heightMeasureSpec);
// 得到child的lp
MarginLayoutParams lp = (MarginLayoutParams) child
.getLayoutParams();
// 当前子空间实际占据的宽度
int childWidth = child.getMeasuredWidth() + lp.leftMargin
+ lp.rightMargin;
// 当前子空间实际占据的高度
int childHeight = child.getMeasuredHeight() + lp.topMargin
+ lp.bottomMargin;
/**
 * 如果加入当前child,则超出最大宽度,则的到目前最大宽度给width,类加height 然后开启新行
 */
if (lineWidth + childWidth > sizeWidth)
{
width = Math.max(lineWidth childWidth);// 取最大的
lineWidth = childWidth; // 重新开启新行,开始记录
// 叠加当前高度,
height += lineHeight;
// 开启记录下一行的高度
lineHeight = childHeight;
} else
// 否则累加值lineWidthlineHeight取最大高度
{
lineWidth += childWidth;
lineHeight = Math.max(lineHeight childHeight);
}
// 如果是最后一个,则将当前记录的最大宽度和当前lineWidth做比较
if (i == cCount - 1)
{
width = Math.max(width lineWidth);
height += lineHeight;
}

}
setMeasuredDimension((modeWidth == MeasureSpec.EXACTLY) ? sizeWidth
: width (modeHeight == MeasureSpec.EXACTLY) ? sizeHeight
: height);

}
/**
 * 存储所有的View,按行记录
 */
private List> mAllViews = new ArrayList>();
/**
 * 记录每一行的最大高度
 */
pri

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        475  2015-01-13 10:10  weixin_tags\.classpath

     文件        852  2014-07-30 09:53  weixin_tags\.project

     文件         57  2015-01-13 10:10  weixin_tags\.settings\org.eclipse.core.resources.prefs

     文件        177  2015-01-14 18:41  weixin_tags\.settings\org.eclipse.jdt.core.prefs

     文件        865  2015-01-24 22:42  weixin_tags\AndroidManifest.xml

     文件      51394  2014-07-26 10:06  weixin_tags\ic_launcher-web.png

     文件     621451  2014-07-26 10:06  weixin_tags\libs\android-support-v4.jar

     文件        781  2014-07-26 10:06  weixin_tags\proguard-project.txt

     文件        563  2015-01-13 20:37  weixin_tags\project.properties

     文件        311  2015-01-13 22:24  weixin_tags\res\drawable\addtag_text_bg.xml

     文件        315  2015-01-13 22:24  weixin_tags\res\drawable\addtag_text_color.xml

     文件        373  2015-01-13 22:26  weixin_tags\res\drawable\bg_addtag_activated.xml

     文件        453  2015-01-13 22:25  weixin_tags\res\drawable\bg_addtag_normal.xml

     文件        453  2015-01-13 22:23  weixin_tags\res\drawable\bg_tag_activated.xml

     文件        429  2015-01-13 22:23  weixin_tags\res\drawable\bg_tag_normal.xml

     文件        345  2014-07-26 13:36  weixin_tags\res\drawable\flag_01.xml

     文件        411  2014-08-02 17:57  weixin_tags\res\drawable\flag_02.xml

     文件        352  2014-08-02 17:57  weixin_tags\res\drawable\flag_03.xml

     文件        352  2015-01-13 10:51  weixin_tags\res\drawable\flag_03_checked.xml

     文件        364  2015-01-13 10:33  weixin_tags\res\drawable\flag_04.xml

     文件        519  2015-01-13 22:28  weixin_tags\res\drawable\flag_edit.xml

     文件        305  2015-01-13 22:22  weixin_tags\res\drawable\tag_text_bg.xml

     文件        309  2015-01-13 22:24  weixin_tags\res\drawable\tag_text_color.xml

     文件       7658  2014-07-26 10:06  weixin_tags\res\drawable-hdpi\ic_launcher.png

     文件       3777  2014-07-26 10:06  weixin_tags\res\drawable-mdpi\ic_launcher.png

     文件      12516  2014-07-26 10:06  weixin_tags\res\drawable-xhdpi\ic_launcher.png

     文件      24777  2014-07-26 10:06  weixin_tags\res\drawable-xxhdpi\ic_launcher.png

     文件       5425  2015-01-24 22:43  weixin_tags\res\layout\activity_main.xml

     文件        390  2015-01-13 22:29  weixin_tags\res\layout\addtag_text.xml

     文件        384  2015-01-13 22:21  weixin_tags\res\layout\tag_text.xml

............此处省略38个文件信息

评论

共有 条评论