DiagonalView
https://github.com/IntruderShanky/Squint
一个可以根据图片变颜色,更加细腻的阴影效果的 Imgae 控件
https://github.com/yingLanNull/ShadowImageView
一个将子view显示为多边形图案的布局
http://www.jcodecraeer.com/a/opensource/2017/0105/6942.html
实现微信QQ组头像 , 设置描边 , 设置圆角矩形圆形头像 等
http://www.open-open.com/lib/view/open1482459625909.html
ParallaxImageView
https://github.com/nvanbenschoten/motion
Android图片压缩工具,仿微信朋友圈压缩策略
http://www.jcodecraeer.com/a/opensource/2016/0802/4542.html
Android加载超长图(微博长图)
http://www.see-source.com/blog/300000024/1247.html
使用 supportV4 的 RoundedBitmapDrawable 实现圆角
http://blog.csdn.net/ys743276112/article/details/52316588
Android Drawable 那些不为人知的高效用法
http://blog.csdn.net/lmj623565791/article/details/43752383
一个图片裁减库,可以自定义UI,非常不错
http://www.jcodecraeer.com/a/opensource/2015/0822/3343.html
一个为ImageView添加徽章,标记(badge)的库
http://www.jcodecraeer.com/a/opensource/2015/1125/3720.html
图像滤镜艺术---ZPhotoEngine超级算法库
http://blog.csdn.net/trent1985/article/details/49616623
带有手势控制的ImageView和FrameLayout
http://www.jcodecraeer.com/a/opensource/2015/1030/3640.html
http://www.jcodecraeer.com/a/opensource/2015/1030/3639.html
http://www.jcodecraeer.com/a/opensource/2015/1029/3636.html
单手操作图片控件 镜像、置顶、缩放、移动StickerView
http://www.jcodecraeer.com/a/opensource/2015/0922/3498.html
ImageProcessing基于 StickerView 现有基础的优化
https://github.com/pepoc/ImageProcessing
将图片像素化的库,可像素化特定区域
http://www.jcodecraeer.com/a/opensource/2015/0902/3404.html
带标签的ImageView扩展:SimpleTagImageView
http://www.open-open.com/lib/view/open1426813954054.html
http://www.open-open.com/lib/view/open1429361445830.html
Android ImageView的强大扩展:FlexiImageView
特性
多种形状的支持(圆形,矩形/正方形,三角形)
高斯模糊效果
反射
自定义边框支持
可定制的阴影支持
在同一个视图中展示多张图片:
http://www.open-open.com/lib/view/open1426473437414.html
Android ImageView 扩展:PhotoView
http://www.open-open.com/lib/view/open1366181874046.html
Android PowerImageView实现,可以播放动画的强大ImageView
http://www.open-open.com/lib/view/open1391690691535.html
ImageView的ScaleType属性
ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType)
属性如下:
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截 取图片的居中部分显示
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小 或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd 把 图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart 把 图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY 把图片 不按比例 扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制
ImageView.ScaleType设置图解
同时使用ImageView的src和background属性实现点击效果
android:adjustViewBounds
是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。
android:cropToPadding
是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用。
android:src对应的方法为setImageResource(R.drawable.xxx),而不是setBackgroundResource(R.drawable.txxx)
关于ImageView和level-list一起使用以显示不同的图片
有时候,我们为了在一个ImageView中显示不同的图片,往往会使用:
其实可以用level-list实现相同的功能。
首先,在res/drawable下建立一个xml文件,内容如下:
然后在layout中把ImageView的src设置成已创建好的xml文件。
程序中变换图片时,只需要使用:
Android会根据level的值自动选择对应的图片。手机显示剩余电量就是用这个方法来显示不同图片的。
让帧动画在结束时消失
在帧动画结束的时候,如何让他消失呢?android提供了击中巧妙的方法:
一般使用帧动画的过程如下:
上面的代码在帧动画结束的时候会保持帧动画的最后一帧。如何让他在结束的时候消失呢?
当然可以写Listener来监听帧动画的结束事件了。不过这种实现方式不准确。
其实只需要在animation-list中最后增加一个item
@android:id/empty 将ImageView的BackGroundResource 的id 设置为空就ok了。
Android ImageView图片透明区域不响应点击事件,不规则图片透明区域响应点击事件
Android 多个ImageView图片层叠透明区域点击事件穿透
ImageView中用Animation-list实现逐帧动画
Android 实现简单截屏并保存为文件
可点可拖动,功能类似seekbar,由camera源码的switch修改的类
camera源码设置条,自己写了个类,具有其主要功能,同样有switcher改进
正方形的ImageView
https://github.com/IntruderShanky/Squint
一个可以根据图片变颜色,更加细腻的阴影效果的 Imgae 控件
https://github.com/yingLanNull/ShadowImageView
一个将子view显示为多边形图案的布局
http://www.jcodecraeer.com/a/opensource/2017/0105/6942.html
实现微信QQ组头像 , 设置描边 , 设置圆角矩形圆形头像 等
http://www.open-open.com/lib/view/open1482459625909.html
ParallaxImageView
https://github.com/nvanbenschoten/motion
Android图片压缩工具,仿微信朋友圈压缩策略
http://www.jcodecraeer.com/a/opensource/2016/0802/4542.html
Android加载超长图(微博长图)
http://www.see-source.com/blog/300000024/1247.html
使用 supportV4 的 RoundedBitmapDrawable 实现圆角
http://blog.csdn.net/ys743276112/article/details/52316588
Android Drawable 那些不为人知的高效用法
http://blog.csdn.net/lmj623565791/article/details/43752383
一个图片裁减库,可以自定义UI,非常不错
http://www.jcodecraeer.com/a/opensource/2015/0822/3343.html
一个为ImageView添加徽章,标记(badge)的库
http://www.jcodecraeer.com/a/opensource/2015/1125/3720.html
图像滤镜艺术---ZPhotoEngine超级算法库
http://blog.csdn.net/trent1985/article/details/49616623
带有手势控制的ImageView和FrameLayout
http://www.jcodecraeer.com/a/opensource/2015/1030/3640.html
http://www.jcodecraeer.com/a/opensource/2015/1030/3639.html
http://www.jcodecraeer.com/a/opensource/2015/1029/3636.html
单手操作图片控件 镜像、置顶、缩放、移动StickerView
http://www.jcodecraeer.com/a/opensource/2015/0922/3498.html
ImageProcessing基于 StickerView 现有基础的优化
https://github.com/pepoc/ImageProcessing
将图片像素化的库,可像素化特定区域
http://www.jcodecraeer.com/a/opensource/2015/0902/3404.html
带标签的ImageView扩展:SimpleTagImageView
http://www.open-open.com/lib/view/open1426813954054.html
http://www.open-open.com/lib/view/open1429361445830.html
Android ImageView的强大扩展:FlexiImageView
特性
多种形状的支持(圆形,矩形/正方形,三角形)
高斯模糊效果
反射
自定义边框支持
可定制的阴影支持
在同一个视图中展示多张图片:
http://www.open-open.com/lib/view/open1426473437414.html
Android ImageView 扩展:PhotoView
http://www.open-open.com/lib/view/open1366181874046.html
Android PowerImageView实现,可以播放动画的强大ImageView
http://www.open-open.com/lib/view/open1391690691535.html
ImageView的ScaleType属性
ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType)
属性如下:
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截 取图片的居中部分显示
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小 或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd 把 图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart 把 图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY 把图片 不按比例 扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制
ImageView.ScaleType设置图解
同时使用ImageView的src和background属性实现点击效果
<ImageView android:id="@+id/image" android:layout_width="@dimen/batman_logo_width" android:layout_height="@dimen/batman_logo_height" android:background="?attr/selectableItemBackground"//点击效果 android:src="@drawable/batman_logo_transparent"//图片 style="@style/logo_image_style"/>
android:adjustViewBounds
是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。
android:cropToPadding
是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用。
android:src对应的方法为setImageResource(R.drawable.xxx),而不是setBackgroundResource(R.drawable.txxx)
关于ImageView和level-list一起使用以显示不同的图片
有时候,我们为了在一个ImageView中显示不同的图片,往往会使用:
if (条件1){
image.setBackground(R.id.xxx1);
}else if (条件2){
image.setBackground(R.id.xxx2);
}
其实可以用level-list实现相同的功能。
首先,在res/drawable下建立一个xml文件,内容如下:
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:maxLevel="0" android:drawable="@drawable/battery_0" /> <item android:maxLevel="1" android:drawable="@drawable/battery_1" /> <item android:maxLevel="2" android:drawable="@drawable/battery_2" /> <item android:maxLevel="3" android:drawable="@drawable/battery_3" /> <item android:maxLevel="4" android:drawable="@drawable/battery_4" /> </level-list>
然后在layout中把ImageView的src设置成已创建好的xml文件。
程序中变换图片时,只需要使用:
imageview.getDrawable().setImageLevel(1);
Android会根据level的值自动选择对应的图片。手机显示剩余电量就是用这个方法来显示不同图片的。
让帧动画在结束时消失
在帧动画结束的时候,如何让他消失呢?android提供了击中巧妙的方法:
一般使用帧动画的过程如下:
ImageView iv = (ImageView)findViewById(R.id.iv);
iv.setBackGroundDrawable(R.id.frametest);
AnimationDrawable ad = (AnimationDrawable)iv.getBackGroundDrawabe();
ad.start();
上面的代码在帧动画结束的时候会保持帧动画的最后一帧。如何让他在结束的时候消失呢?
当然可以写Listener来监听帧动画的结束事件了。不过这种实现方式不准确。
其实只需要在animation-list中最后增加一个item
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/d1" android:duration="100" /> <item android:drawable="@drawable/d2" android:duration="100" /> <item android:drawable="@drawable/d3" android:duration="100" /> <item android:drawable="@drawable/d4" android:duration="100" /> <item android:drawable="@drawable/d5" android:duration="100" /> <item android:drawable="@drawable/d6" android:duration="100" /> <item android:drawable="@android:id/empty" android:duration="100" /> </animation-list>
@android:id/empty 将ImageView的BackGroundResource 的id 设置为空就ok了。
Android ImageView图片透明区域不响应点击事件,不规则图片透明区域响应点击事件
Android 多个ImageView图片层叠透明区域点击事件穿透
ImageView中用Animation-list实现逐帧动画
Android 实现简单截屏并保存为文件
可点可拖动,功能类似seekbar,由camera源码的switch修改的类
camera源码设置条,自己写了个类,具有其主要功能,同样有switcher改进
正方形的ImageView
import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView;
/**
* 正方形的ImageView
* @author dty
*
*/
public class SquareCenterImageView extends ImageView {
public SquareCenterImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SquareCenterImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareCenterImageView(Context context) {
super(context);
}
@Override
public void setImageBitmap(Bitmap bm) {
Log.d("roamer", "bm.getWidth():"+bm.getWidth());
Log.d("roamer", "bm.getHeight():"+bm.getHeight());
super.setImageBitmap(bm);
}
private void clipCenterImage(){
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// For simple implementation, or internal size is always 0.
// We depend on the container to specify the layout size of
// our view. We can't really know what it is since we will be
// adding and removing different arbitrary views and do not
// want the layout to change as this happens.
setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));
// Children are just made to fill our space.
int childWidthSize = getMeasuredWidth();
int childHeightSize = getMeasuredHeight();
//高度和宽度一样
heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}