padding-bottom实现图片等比例缩放

1、padding-bottom 如果用%来表示的话,计算是根据父元素的width的值进行计算的。

  例:父元素.wrapper的width是100px,height设置为0, padding-bottom的值是50%,则该元素的高是50px

2、 百分比方法适用于的场景:一个图片需要全部显示出来,而且图片本身的宽高比例不变,能够随着屏幕的大小进行变化。

3、实现等比缩放的效果,还可以通过vw来设置,缺点:有的浏览器不支持。

  下面是例子中css.wrapper中可以替换为

   .wrapper{
      width: 100%;
       height: 26.66vw;
    }

下面例子可以通过屏幕的缩放来等比的改变图片的宽高。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>padding-bottom</title>
  <style type="text/css" rel="stylesheet">
    .wrapper{
      width: 100%;
      height: 0;
      /*padding-bottom的值是基于父元素的width来计算的,则padding-bottom=100%/3.75=26.66% */
      padding-bottom: 26.66%;
      overflow: hidden;
    }
    .content{
        position: relative;
        width: 100%;
    }
  </style>
</head>
<body>
<div class="wrapper">
  <!-- 子元素的图片的宽为375px,高为100px,则算出来的宽高比为375/100=3.75 -->
  <img class="content" src="http://img1.qunarzz.com/piao/fusion/1806/1c/4847ea66072c7b02.jpg_750x200_c32457fb.jpg" alt="图片">
</div>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在一些手机游戏中,玩家可以通过虚拟控制盘来控制游戏角色的行动。 无人机和玩具操控App中也有这一类控制盘的应用。用自定义View的方式来实现类似手柄的控件。相关代码请见 github.com/RustFisher/…JoystickView特性目前JoystickView特性如下2种风格固定控制盘;浮动跟随模式;控制盘会移动到手指第一次点击的地方可以在背景上添加“箭头”,即添加效果图片自定义的“触摸球”图片和背景图片手指移出了控制盘范围,仍然能够保持追随能获取到移动位置的百分比参数实现思路用自定义View的方式实现这个控制盘。创建TouchView。控制盘的基本要求是跟随手指做出反应。为了获取到手指触屏的坐标,会用到View的onTouchEvent方法。控件中的“触摸球”和背景由图片得来。在自定义view中先获取相应的bitmap,缩放成指定的尺寸。onTouchEvent中获取到相应的坐标,计算出图片应该出现的位置;onDraw中根据坐标进行绘制。 计算出手指位置与控制盘中心的距离等信息,通过listener传递出去。代码示例样式设定有固定和浮动这两种风格,未来可能还会添加public enum PadStyle {     FLOATING /* 随用户手指重新定位 */,     FIXED    /* 固定位置 */ }控制盘配置我们可以不直接操作TouchView,创建TouchViewModel存放相关的配置。    private int bgResId;           // 背景图片资源ID     private int touchBmpResId;     // 触摸图资源ID - 例如一个圆球     private int directionPicResId; // 指示当前触摸点与圆心相对方向的图片ID     private float mWholeViewWid;    // 整个View的宽     private float mWholeViewHeight; // 整个View的高     private float mWholePadWid;    // 盘的宽度,包括箭头;并不是View的总宽度     private float mWholePadHeight; // 盘的高度,包括箭头;并不是View的总宽度     private int mRoundBgRadius;    // 背景圆的半径 背景圆位置可以变化     private int mTouchBallRadius = 100; // 触摸球的半径     private int mRoundBgPadding;   // 背景圆到Pad边界的px  一般是留给方向箭头的位置     private boolean showDirectionPic = false;    // 是否显示指示图片     private PadStyle mPadStyle = PadStyle.FIXED; // 默认为固定位置的     private PadLocationType mPadLocationType = PadLocationType.LEFT_BOT;     // .........控制盘管理器控制盘的配置项比较多,抽象出一个DefaultController来管理控制盘。这个控制器不是必要的。 管理器需要控制盘所在的父View,这里用的是RelativeLayout。创建一个“左控制盘”。将各个尺寸配置传入。最后添加到containerView中。    private void createLeftControlTouchView() {         TouchViewModel model = new TouchViewModel(                 R.drawable.ui_pic_joystick_left_pad,                 R.drawable.ui_pic_joystick_control_ball);         model.setWholeViewSize(ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_whole_field_wid),                 ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_whole_field_height));         model.setPadSize(ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_pad_size),                 ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_pad_size));         int roundBgRadius = ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_round_bg_radius);         model.setContentSize(roundBgRadius, (int) (roundBgRadius / 3.5));         model.setStyle(padStyle, PadLocationType.LEFT_BOT);         model.setRoundBgPadding(ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_circle_bg_padding));         leftControlTouchView = new TouchView(ctx);         leftControlTouchView.init(model);         // View的总大小         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(                 ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_whole_field_wid),                 ctx.getResources().getDimensionPixelSize(R.dimen.ui_joystick_whole_field_height)         );         params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);         params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);         leftControlTouchView.setLayoutParams(params);     }     // ............     createLeftControlTouchView();     containerView.addView(leftControlTouchView);管理器初始化时需要一个ViewGroup来承载控制盘。    public DefaultController(Context context, RelativeLayout containerView, PadStyle padStyle) {         this.ctx = context;         this.containerView = containerView;         this.padStyle = padStyle;     }Fragment中使用初始化管理器初始化管理器,创建控制盘    mDefaultController =             new DefaultController(getContext(),                     (RelativeLayout) root.findViewById(R.id.joystick_container));     mDefaultController.createViews();     mDefaultController.showViews(false);设置监听器,获取用户的操作信息通过控制器来设置监听器        mDefaultController.setLeftTouchViewListener(new JoystickTouchViewListener() {             @Override             public void onTouch(float horizontalPercent, float verticalPercent) {                 Log.d(TAG, "onTouch left: "   horizontalPercent   ", "   verticalPercent);             }             @Override             public void onReset() {                 Log.d(TAG, "onReset: left");             }             @Override             public void onActionDown() {                 Log.d(TAG, "onActionDown: left");             }             @Override             public void onActionUp() {                 Log.d(TAG, "onActionUp: left");             }         });至此,我们实现了一个简单的控制盘控件。在一些控制类应用中可以使用这个控件。若想要做出更优美,更吸引人的控件,需要我们有好的审美水平。
背景按钮应该是我们的App里面最普遍的组件之一了,特别常用。通常我们写一个按钮的套路很简单也很固定。大概分为以下几个步骤:在xml布局里面按照设计稿的尺寸位置写一个Textview按照设计稿规定的颜色和圆角在drawable目录下创建一个shape文件将这个shape文件作为Textview的背景这样一个很标准的按钮就诞生了,然后就可以继续愉快的开发了。这本来没有什么问题,也比让UI妹纸切图高级了很多,但是随着开发的进行你会发现,UI妹纸的想法很多,不同的界面有各种不同圆角和不同背景颜色的按钮,这个时候你需要把上面的三个步骤再进行N次。最后你会发现你的drawable目录下有各种各样的按钮背景资源,难以管理。特别是假如有的按钮要求有点击效果时需要使用selector,这个时候可能就会产生三个文件用来满足需求,所以总得来说很繁琐。想法基于以上原因以及按钮使用的普遍程度,感觉很有必要写一个使用简单且能满足日常各种需求的按钮。我们先梳理下按钮需要达到的效果:使用简单(即可以利用属性对按钮进行各种设置)可以支持设置按钮文字、按钮文字颜色、按钮文字大小可以支持统一设置圆角大小,也可以单独设置按钮每个圆角的大小可以支持设置按钮背景颜色可以支持selector可以支持圆形按钮可以支持渐变色按钮,可以支持各个方向设置渐变色可以支持设置带边框的按钮,可以设置边框的颜色和宽度可以支持设置按钮是否可以点击可以设置带图标的按钮,支持自定义按钮大小,和自动缩放,图标支持设置在文字上下左右四个方向,支持自定义文字距离图标的距离引入implementation 'top.androidman:superbutton:1.0.1'Github传送门实现效果基本使用单独设置每个圆角Selector圆形按钮渐变背景的按钮有边框按钮按钮不可点击带图标按钮代码解释0x1 基本使用效果代码<top.androidman.SuperButton         android:layout_width="match_parent"         android:layout_height="60dp"         android:layout_margin="20dp"         app:color_normal="@color/color_accent"         app:corner="10dp"         app:text="@string/poetry_1"         app:textColor="@color/color_white"         app:textSize="22sp" />属性解释按钮文字app:text="床前明月光"按钮文字颜色 app:textColor="@color/color_white"按钮文字大小app:textSize="22sp"按钮背景颜色app:color_normal="@color/color_accent"0x2 单独设置每个圆角效果代码<top.androidman.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     app:color_normal="@color/color_6596ff"     app:corner="40dp"     app:corner_left_bottom="0dp"     app:text="单独设置左下角为0dp"     app:textColor="@color/color_white"     app:textSize="22sp" />属性解释单独设置左下角角度app:corner_left_bottom="0dp"单独设置左上角角度app:corner_left_top="5dp"单独设置右上角角度app:corner_right_top="22dp"单独设置右下角角度app:corner_right_bottom="0dp"按钮四个角的圆角角度app:corner="10dp"注意:单独设置角度会覆盖corner属性0x3 Selector效果代码<top.androidman.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     android: 圆形按钮效果代码<top.androidman.SuperButton     android:layout_width="160dp"     android:layout_height="160dp"     android:layout_margin="20dp"     android: 渐变背景的按钮效果代码<top.androidman.superbutton.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     app:color_direction="RIGHT_LEFT"     app:color_end="@color/color_14c7de"     app:color_start="@color/color_red"     app:corner="20dp"     app:text="从右到左渐变"     app:textColor="@color/color_white"     app:textSize="22sp" />属性解释开始颜色app:color_start="@color/color_14c7de"结束颜色app:color_end="@color/color_red"颜色渐变方向app:color_direction="RIGHT_LEFT"TOP_BOTTOM 从上到下BOTTOM_TOP 从下到上LEFT_RIGHT 从左到右RIGHT_LEFT 从右到左TR_BL 从右上到左下BL_TR 从左下到右上BR_TL 从右下到左上TL_BR 从左上到右下注意:当设置颜色渐变时,color_normal,color_pressed设置将失效0x6 有边框按钮效果代码<top.androidman.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     app:border_color="@color/color_red"     app:border_width="2dp"     app:color_normal="@color/color_accent"     app:corner="10dp"     app:text="@string/poetry_1"     app:textColor="@color/color_white"     app:textSize="22sp" />属性解释边框宽度app:border_width="2dp"边框颜色app:border_color="@color/color_red"0x7 按钮不可点击效果代码<top.androidman.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     android: 带图标按钮效果代码<top.androidman.superbutton.SuperButton     android:layout_width="match_parent"     android:layout_height="60dp"     android:layout_margin="20dp"     app:color_normal="@color/color_red"     app:corner="20dp"     app:drawable_padding="20dp"     app:drawable_right="@mipmap/icon_like"     app:text="图标在右边"     app:textColor="@color/color_white"     app:textSize="22sp" />属性解释图标在文字右边app:drawable_right="@mipmap/icon_like"图标在文字左边app:drawable_left="@mipmap/icon_like"图标在文字上边app:drawable_top="@mipmap/icon_like"图标在文字下边app:drawable_bottom="@mipmap/icon_like"图标距文字距离app:drawable_padding="20dp"根据文字大小缩放图标,默认为true,当为false时显示原图标大小app:drawable_auto="true"按钮支持的所有属性<?xml version="1.0" encoding="utf-8"?> <resources>     <declare-styleable name="SuperButton">         <!--默认配置-->         <attr name="text" format="reference|string" />         <!--按钮文字颜色-->         <attr name="textColor" format="reference|color" />         <!--按钮文字大小-->         <attr name="textSize" format="dimension" />         <!--文字是否单行,默认单行-->         <attr name="singleLine" format="boolean" />         <!--默认背景颜色-->         <attr name="color_normal" format="reference|color" />         <!--按压时的背景颜色-->         <attr name="color_pressed" format="reference|color" />         <!--图片在文字左边-->         <attr name="drawable_left" format="reference|color" />         <!--图片在文字右边-->         <attr name="drawable_right" format="reference|color" />         <!--图片在文字上边-->         <attr name="drawable_top" format="reference|color" />         <!--图片在文字下边-->         <attr name="drawable_bottom" format="reference|color" />         <!--图片距文字的距离-->         <attr name="drawable_padding" format="dimension" />         <!--图标根据文字大小自动缩放图标-->         <attr name="drawable_auto" format="boolean" />         <!--只有图片的情况,此时会忽略文字,即便设置-->         <attr name="drawable_middle" format="reference|color" />         <!--图片在中间时宽-->         <attr name="drawable_middle_width" format="dimension" />         <!--图片在中间时高-->         <attr name="drawable_middle_height" format="dimension" />         <!--形状-->         <attr name="shape" format="enum">             <!--圆形-->             <enum name="CIRCLE" value="1" />             <!--矩形-->             <enum name="RECT" value="2" />         </attr>         <!--按钮背景是渐变色时设置-->         <!--开始颜色-->         <attr name="color_start" format="color" />         <!--结束颜色-->         <attr name="color_end" format="color" />         <!--颜色方向-->         <attr name="color_direction" format="enum">             <!--从上到下-->             <enum name="TOP_BOTTOM" value="0x1" />             <!--从右上到左下-->             <enum name="TR_BL" value="0x2" />             <!--从右到左-->             <enum name="RIGHT_LEFT" value="0x3" />             <!--从右下到左上-->             <enum name="BR_TL" value="0x4" />             <!--从下到上-->             <enum name="BOTTOM_TOP" value="0x5" />             <!--从左下到右上-->             <enum name="BL_TR" value="0x6" />             <!--从左到右-->             <enum name="LEFT_RIGHT" value="0x7" />             <!--从左上到右下-->             <enum name="TL_BR" value="0x8" />         </attr>         <!--按钮圆角,如果单独设置会覆盖此设置-->         <attr name="corner" format="dimension" />         <!--左上角圆角半径-->         <attr name="corner_left_top" format="dimension" />         <!--左下角圆角半径-->         <attr name="corner_left_bottom" format="dimension" />         <!--右上角圆角半径-->         <attr name="corner_right_top" format="dimension" />         <!--右下角圆角半径-->         <attr name="corner_right_bottom" format="dimension" />         <!--边框宽度-->         <attr name="border_width" format="dimension" />         <!--边框颜色-->         <attr name="border_color" format="color" />         <!--按钮是否可以点击-->         <attr name="button_click_able" format="boolean" />     </declare-styleable> </resources>高级应用1.想修改按钮相关调用如下方法:/**      * 修改文字      */     superButton.setText(CharSequence text);     /**      * 修改文字颜色      */     superButton.setTextColor(@ColorInt int textColor);     /**      * 修改按钮背景颜色      */     superButton.setColorNormal(@ColorInt int colorNormal);当某些状态下需要代码控制,将按钮置灰然后不可点击,可以直接调用如下方法:/**      * 调用此方法后按钮颜色被改变,按钮无法点击      */     superButton.setUnableColor(@ColorInt int color);如果只是想设置按钮不可点击,不需要改变按钮颜色,可以使用如下方法/**      * 设置按钮是否可以点击      */     superButton.setButtonClickable(boolean buttonClickable);
10.1 何为Qt样式表 由于Qt样式表的引入,定制Qt部件的外观样式变得非常简单。 Qt样式表的思想很大程度上是来自于HTML的层叠式样式表(CSS), 通过调用QWidget::setStyleSheet()或QApplication::setStyleSheet(), 你可以为一个独立的子部件、整个窗口,甚至是整个个应用程序指定一个样式表。 样式表是通过QStyle的一个叫做QStyleSheetStyle的特殊子类来实现的。 这个特殊的子类实际上是其他的系统特定风格类的包裹类,它会把通过样式表指定的自定义外观风格应用在底层的系统特定风格之上。 10.2 样式表语法基础 Qt样式表与CSS的语法规则几乎完全相同,如果你已经了解了CSS,完全可以跳过本节。 一个样式表由一系列的样式规则构成。每个样式规则都有着下面的形式: selector { attribute: value } 选择器(selector)部分通常是一个类名(例如QComboBox),当然也还有其他的语法形式。 属性(attribute)部分是一个样式表属性的名字, 值(value)部分是赋给该属性的值。 为了使用方便,我们还可以使用一种简化形式: selector1, selector2, ..., selectorM { attribute1: value1; attribute2: value2; ... attributeN: valueN; } 这种简化形式可以同时为与M个选择器相匹配的部件设置N种属性。 例如: QCheckBox, QComboBox, QSpinBox { color: red; //字体颜色:红 font: bold; } 这个规则设置了所有的QCheckBox、QComboBox和QSpinBox的前景色、背景色和字体。 10.3 方箱模型 在样式表中,每个部件都被看作是一个由四个同心相似的矩形组成的箱体: 空白(margin)、边框(border)、填充(padding)和内容(content)。 对于一个平面部件——例如一个空白、边框和填充都是0像素的部件——而言,这四个矩形是完全重合的。 空白区域位于边框外,并且总是透明的。 边框为部件提供了四周的框架,其border-style属性可以设置为一些内置的框架风格,如inset、outset、solid和ridge。 填充在边框和内容区域之间提供了空白间隔。 10.4 前景与背景 部件的前景色用于绘制上面的文本,可以通过color属性指定。 背景色用于绘制部件的填充矩形,可以通过background-color属性指定。 背景图片使用background-image属性定义,它用于绘制由background-origin指定的矩形区域(空白、边框、填充或内容)。背景图片在矩形区域内的对齐和平铺方式可以通过background-position和background-repeat属性指定。 QFrame { margin: 10px; border: 2px solid green; padding: 20px; background-image: url(qt.png); background-position: top right; background-origin: content; background-repeat: none; } 在这个例子中,QFrame四周的空白、边框和填充值都是一样的。 实际上margin属性可以在上下左右四个方向分别指定我们需要的不同值,例如: QFrame { margin: 14px 18px 20px 18px; } 同时,我们也可以分别指定margin-top、margin-right、margin-bottom、margin-left四个属性。 QFrame { margin-top: 14px; margin-right: 18px; margin-bottom: 20px; margin-left: 18px; } 虽然目前我们仅仅使用了QFrame作为例子,但是我们也可以同样的将这些属性应用于任何一个支持方箱模型的Qt部件,例如:QCheckBox、 QLabel、QLineEdit、QListView、QMenu、QPushButton、QTextEdit、和QToolTip。 10.5 可缩放样式 在默认情况下,通过background-image指定的背景图片会自动重复平铺,以覆盖部件的整个填充矩形(即边框里面的那个区域)。 ///注意区别: 如果我们想创建能够随着部件大小自动缩放而不是平铺的背景,我们需要设置一种称之为“边框图片”的东东。 注意 “边框图片”可以通过border-image属性指定,它同时提供了部件的背景和边框。 一个“边框图片”被分为九个部分(九宫格),有点向tic-tac-toe游戏的棋盘。 当一个部件的边框被填充时,四角的格子通常不会发生变化,而其余的五个格子则可能被拉伸或平铺以填充可用空间。 当指定一个“边框图片”时,除了图片本身,我们还必须指定用来分割九宫格的四条分割线。同时我们还必须指定非边角的格子是应该平铺还是拉伸,以及边框的宽度(用来确定边角格子的大小,防止边角被缩放变形)。 例如,下面的样式表定义了上图中的button: QPushButton { border-width: 4px; border-image: url(button.png) 4 4 4 4 stretch stretch; } 另外,“边框图片”还应该含有alpha通道,以使背景能够在边角处露出来。 10.6控制大小 min-width和min-height两个属性可以用来指定一个部件的内容区域的最小大小。 这两个值将影响部件的minimumSizeHint(),并在布局时被考虑。 例如: QPushButton { min-width: 68px; min-height: 28px; } 如果该属性没有被指定,最小大小将从部件的内容区域和当前样式中继承。 10.7 伪状态 部件的外观可以按照用户界面元素状态的不同来分别定义,这在样式表中被称为“伪状态”。例如,如果我们想在一个push button在被按下的时候具有sunken的外观,我们可以指定一个叫做 :pressed 的伪状态。 QPushButton { border: 2px outset green; } QPushButton:pressed { background: gray; }
SwissArmyKnife是什么SwissArmyKnife 是一款方便调试android UI的工具,可以兼容所有android版本,不需要root权限。可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为px和dp),圆角尺(单位dp)工具,可以直接测量大小。针对android开发者还提供了布局树查看功能,可以直接在手机屏幕查看当前Activity中所有控件层次信息等。可以通过滚动层级滚轮来控制只显示某一层级的信息,避免层级覆盖等。使用方式compile 'com.wanjian:sak:0.0.3'android 4.0及以上用户直接在application的onCreate中调用 com.wanjian.sak.LayoutManager.init(Application context) ,其他版本可以在activity的onResume中调用com.wanjian.sak.LayoutManager.init(Activity act)初始化。启动app后会在屏幕左上角看到一个 android logo ,点击即可进入功能界面。功能界面边框选项开启边框选项后可以在手机屏幕看到所有控件的边界,效果如下内外边距选项开启后会在屏幕看到如下效果半透明绿色代表内边距,PT表示上边内边距(padding top),PL表示左内边距(padding left),PT表示右内边距(padding right),PB便是下内边距(padding bottom)。半透明红色代表外边距, ML,MT,MR,MB分别表示左外边距,上外边距,右外边距,下外边距。所有边距单位都是dp(pt),android中会四舍五入,所有边距都是整数,所以可能跟设计图中有不超过1dp(pt)的误差。宽高选项开启后会看到控件的宽高,单位是dp(pt)图片宽高字体大小字体颜色16进制,ARGB强制图片宽高若开启图片宽高选项后看不到图片大小,可以尝试开启强制图片宽高选项。 ps 该选项可能会导致滑动卡顿自定义信息自定义信息用于android开发者调试使用,开发者可以为view设置setTag(com.wanjian.sak.CanvasManager.INFO_KEY,Object),设置后并开启自定义信息选项后就可以在控件左上角看到自定义的文本信息了。比如开发者想要在屏幕上看到TextView中有多少个文字,就可以这样使用textview.setTag(com.wanjian.sak.CanvasManager.INFO_KEY,textview.getText().length()),这样开启自定义信息选项后就可以在TextView上看到文字长度了。实时刷新开启实时刷新后当手指在屏幕上移动时就可以实时看到相关信息,开启实时刷新后可能会导致滑动卡顿,也可能导致触摸,点击等失效。层级信息可以通过滚动滚轮来控制只显示某一层次区间的信息,比如只想看ListView中子控件的大小,就可以滚动滚轮来控制只显示ListView子控件大小,具体调整成多少需要多次尝试。滚轮可以控件边框,宽高,布局树等等。直尺圆角尺,取色器开启后会在屏幕左上角显示,取色器刚开启时只会在屏幕左上角看到一个黑框,拖动到要取色的位置后抬起手机即可完成取色,取色器四个角可以获取所指像素的颜色值。取色器可以获取native页面每个像素颜色,也可以获取webview中每一个像素的颜色。布局树布局树可以双指缩放扩展用户可以方便的对SAK进行扩展,只需要继承自AbsCanvas并重新onDraw(Canvas canvas, Paint paint, ViewGroup viewGroup, int startLayer, int endLayer),或者继承自CanvasLayerAdapter并重写drawLayer(Canvas canvas, Paint paint, View view)又或者继承自CanvasLayerTxtAdapter区别在于onDraw中没对层级进行处理,drawLayer中的view已经是层级区间的view,CanvasLayerTxtAdapter提供了drawTxt(String txt, Canvas canvas, Paint paint, View view)方法,可以直接调用drawTxt就可以把txt绘制到当前view左上角。写完自定义的Canvas后还需要在OperatorView布局中加入布局代码,用于开启自定义的Canvas,比如在布局中加入开关按钮,并为按钮添加监听,开启后调用 Canvas

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值