using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter
|
{
|
/// <summary>
|
/// 设备明细信息的列表控件(设备信息界面专用,不建议别人使用)
|
/// </summary>
|
public class DeviceInformationListControl : VerticalScrolViewLayout
|
{
|
/// <summary>
|
/// 弧度的圆的一半的高度(固定)
|
/// </summary>
|
public int halfRoundHeigth = Application.GetRealHeight(116) / 2;
|
/// <summary>
|
/// 明细标题高度(固定)
|
/// </summary>
|
public int titleHeight = Application.GetRealHeight(60);
|
/// <summary>
|
/// 明细列表控件的桌布
|
/// </summary>
|
private FrameLayout detailBackFrame = null;
|
|
/// <summary>
|
/// <para>设备明细信息的列表控件(设备信息界面专用,不建议别人使用)</para>
|
/// <para>请不要添加到父控件中,调用InitControl()完成初始化</para>
|
/// </summary>
|
public DeviceInformationListControl()
|
{
|
}
|
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
/// <param name="frame">父容器,不能为null</param>
|
/// <param name="bottomWhiteFrameHeight">底部白色背景控件的高度</param>
|
/// <param name="listViewMaxHeight">列表控件最大的高度</param>
|
/// <param name="minDetailFrameHeight">明细Frame的最小高度</param>
|
/// <param name="menuRowCount">菜单的行数(不含标题)</param>
|
/// <param name="appendHeight">列表控件底部附加的空白高度(不添加在这个封装控件中)</param>
|
public void InitControl(FrameLayout frame, int bottomWhiteFrameHeight,
|
int listViewMaxHeight, int minDetailFrameHeight, int menuRowCount, int appendHeight = 0)
|
{
|
//★★★★设备明细列表需要特效,估计以后我也看不懂这代码什么意思了★★★★
|
|
//列表控件最大的高度
|
listViewMaxHeight = listViewMaxHeight - appendHeight;
|
//弧度的圆的一半的高度(固定)
|
int halfRoundHeigth = Application.GetRealHeight(116) / 2;
|
//明细标题高度(固定)
|
int titleHeight = Application.GetRealHeight(60);
|
//明细Frame的最小高度
|
minDetailFrameHeight = minDetailFrameHeight - appendHeight;
|
//明细Frame实际的高度(菜单数 * 行的高度 + 明细标题高度)
|
int realDetailHeight = menuRowCount * ControlCommonResourse.ListViewRowHeight + titleHeight;
|
if (realDetailHeight < minDetailFrameHeight)
|
{
|
//明细Frame实际的高度不能低于最小高度,不然白色会铺不满
|
realDetailHeight = minDetailFrameHeight;
|
}
|
//列表控件的高度
|
int listViewHeight = listViewMaxHeight;
|
if (realDetailHeight + halfRoundHeigth < listViewMaxHeight)
|
{
|
listViewHeight = realDetailHeight + halfRoundHeigth;
|
}
|
//列表控件实际高度与明细最小高度的差(此值只有0,或者大于0)
|
int differValue = listViewHeight - minDetailFrameHeight - halfRoundHeigth;
|
//列表控件
|
this.Y = ControlCommonResourse.BodyFrameHeight - listViewHeight - bottomWhiteFrameHeight - appendHeight;
|
this.BackgroundColor = UserCenterColor.Current.Transparent;
|
this.Height = listViewHeight;
|
frame.AddChidren(this);
|
//在列表控件里添加一层背景桌布
|
var listViewBackFrame = new FrameLayout();
|
listViewBackFrame.BackgroundColor = UserCenterColor.Current.Transparent;
|
listViewBackFrame.Height = realDetailHeight + halfRoundHeigth + differValue;
|
base.AddChidren(listViewBackFrame);
|
|
if (differValue > 0)
|
{
|
//添加一个透明的东西到列表顶部
|
var frameTransparent = new FrameLayout();
|
frameTransparent.BackgroundColor = UserCenterColor.Current.Transparent;
|
frameTransparent.Height = differValue;
|
listViewBackFrame.AddChidren(frameTransparent);
|
}
|
|
//弧度的圆
|
var btnRound = new NormalViewControl(listViewBackFrame.Width, halfRoundHeigth * 2, false);
|
btnRound.Y = differValue;
|
btnRound.BackgroundColor = UserCenterColor.Current.White;
|
btnRound.Radius = (uint)halfRoundHeigth;
|
listViewBackFrame.AddChidren(btnRound);
|
//明细列表的桌布,白色背景(覆盖弧度的圆的半边)
|
this.detailBackFrame = new FrameLayout();
|
detailBackFrame.Y = btnRound.Bottom - btnRound.Height / 2;
|
detailBackFrame.Height = realDetailHeight;
|
detailBackFrame.BackgroundColor = UserCenterColor.Current.White;
|
listViewBackFrame.AddChidren(detailBackFrame);
|
}
|
|
/// <summary>
|
/// 添加子控件
|
/// </summary>
|
/// <param name="view"></param>
|
public override void AddChidren(View view)
|
{
|
if (detailBackFrame != null)
|
{
|
var tempView = detailBackFrame.GetChildren(detailBackFrame.ChildrenCount - 1);
|
if (tempView != null)
|
{
|
view.Y = tempView.Bottom;
|
}
|
detailBackFrame.AddChidren(view);
|
}
|
}
|
}
|
}
|