属性src和background区别
来源:互联网 发布:软件开发经费预算 编辑:程序博客网 时间:2024/06/05 11:11
src一般只有ImageView才有这个属性一、View的background属性分析首先分析View的draw过程 // View.java public void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; final boolean dirtyOpaque = (privateFlags & PFLAG_DIRTY_MASK) == PFLAG_DIRTY_OPAQUE && (mAttachInfo == null || !mAttachInfo.mIgnoreDirtyState); mPrivateFlags = (privateFlags & ~PFLAG_DIRTY_MASK) | PFLAG_DRAWN; /* *<span style="white-space:pre"></span> 主要绘制以下四部分内容 * 1. Draw the background 画背景background.draw * * 3. Draw view's content<span style="white-space:pre"></span>绘制自己onDraw * 4. Draw children<span style="white-space:pre"></span>绘制children despatchDraw * * 6. Draw decorations (scrollbars for instance) 绘制装饰onDrawScrollBArs */ // Step 1, draw the background, if needed int saveCount; if (!dirtyOpaque) { <span style="white-space:pre"></span>// 1.画背景 drawBackground(canvas); } // ... } private void drawBackground(Canvas canvas) { final Drawable background = mBackground; if (background == null) { return; } mBackground.setBounds(0, 0, mRight - mLeft, mBottom - mTop); final int scrollX = mScrollX; final int scrollY = mScrollY; if ((scrollX | scrollY) == 0) { background.draw(canvas); // 根据setBounds的范围画background的图片 } else { canvas.translate(scrollX, scrollY); background.draw(canvas); canvas.translate(-scrollX, -scrollY); } }总结:background默认是把图片全屏画在View上,并不做缩放等处理二、ImageView的src属性分析 使用: <ImageView android:id="@+id/imageview" android:scaleType="centerCrop"<span style="white-space:pre"></span> android:src="@drawable/parallax_img" android:layout_width="match_parent" android:layout_height="100dp"/> 源码: ImageView的构造函数中解析scaleType setScaleType(sScaleTypeArray[index]); // mScaleType = scaleType; 不同的ScaleType对应不同的缩放类型 <span style="white-space:pre"></span>之后根据mScaleType转化成对应的Matrix(mDrawMatrix),之后onDraw就能使用缩放后的ImageView ImageView的onDraw方法 protected void onDraw(Canvas canvas) { super.onDraw(canvas);<span style="white-space:pre"></span>// 上述View的四个步骤 // 如果有设置scaleType则mDrawMatrix就有值 if (mDrawMatrix == null && mPaddingTop == 0 && mPaddingLeft == 0) { mDrawable.draw(canvas); } else { // 根据matrix进行对应的图像的缩放 int saveCount = canvas.getSaveCount(); canvas.save(); if (mCropToPadding) { final int scrollX = mScrollX; final int scrollY = mScrollY; canvas.clipRect(scrollX + mPaddingLeft, scrollY + mPaddingTop, scrollX + mRight - mLeft - mPaddingRight, scrollY + mBottom - mTop - mPaddingBottom); } canvas.translate(mPaddingLeft, mPaddingTop); if (mDrawMatrix != null) { canvas.concat(mDrawMatrix); } mDrawable.draw(canvas); canvas.restoreToCount(saveCount); } } 总结:src可以使用scaleType进行多种缩放(对图片),以此来适配各种不同的View三、总结 backGround是各种View都具有的属性,默认只能填充整个view,作为背景 src是ImageView及子类独有的属性,可以进行各种填充效果(缩放)
1 0
- 属性src和background区别
- ImageView的src和background属性区别
- android 属性中src和background的区别
- ImageView中XML属性src和background区别
- ImageView的background和src属性有什么区别
- ImageView中XML属性src和background的区别
- ImageView中XML属性src和background区别
- ImageView中XML属性src和background区别
- ImageView中src和background属性的主要亮点区别
- ImageView中XML属性src和background的区别
- android:ImageView中XML属性src和background的区别
- ImageView中XML属性src和background的区别
- src和background的区别
- 14ImageView的background和src属性
- ImageView(图像视图)-src属性和background属性的区别:
- android中src和background区别
- android中src和background区别
- android中src和background区别
- ReactJS学习系列课程(React ES6语法使用)
- JSP基本原理
- HttpClient
- 写在前面,以后开始记录自己遇到的技术问题
- caffe— 使用模型进行fine tune
- 属性src和background区别
- 用文件保存学生信息
- swipe轮播插件,支持手势,简单实用
- 关于结婚
- Emacs入门笔记
- 《剑指offer》:[48]不能被继承的类-单例模式
- 使用 ResultSet 遍历查询结果String getString(int columnIndex)
- 翻转课堂心得
- bzoj1191(最大匹配,但不完全一样)