首先扯点别的:昨天约人打拳皇,又被一顿海虐,也是艰难。万水千山总是情,虐我轻点行不行?八神用的越来越水了,昨天下午饭都没有胃口了。看样是时候退出拳皇97界了。
进入正题:今天说一个GITHUB上的一个开源的项目TouchImageView,链接地址如下:TouchImageView,今天的博客就照着github上的英文给大家翻译一下(我得为自己的560的四级,460的六级找个说法啊),顺便给大家展示一下demo,让大家看的更直观一点。
- TouchImageView功能介绍:TouchImageView继承并涵盖了ImageView的所用功能。另外TouchImageView增加了双指缩放,拖拽,滑动,双击缩放的功能和其他动画效果。我们的目的是使TouchImageView的功能尽可能和那些展示图片的应用程序相似。
例子:请查看包括以下功能例子的应用示例应用程序
单个TouchImageView: 单个TouchImageView的基础使用,包括 OnTouchImageViewListener(触摸监听), getScrollPosition()(得到所放的中心位置), getZoomedRect()(得到缩放的矩形), isZoomed()(判断是否所放了),and getCurrentZoom()(得到当前的所放比).的使用。如果大家现在对这几个函数还没有什么概念很正常,坚持一下,继续往下看。
3.1,先看效果,再解释
3.2,这是主界面,点击 Single TouchImageView 进入到相应的活动
3.3Single TouchImageView Activity
可以进行双击缩放,双指缩放,拖拽的操作,我操做的效果如下(注意。你的操作效果跟我的不一样)
3.4 操作效果
ViewPager 的例子:多个TouchImageView放在ViewPager 里面,就像是展示图片的画廊app。
4.1 点击主界面的ViewPager Example进入到相应的界面,效果如下,可以左右滑动测试ViewPager的效果
4.2左右滑动改变图片
镜子效果:使用onTouchImageViewListener and setZoom()使两个TouchImageView的展示效果相同。
5.1 点击主界面的Mirroring Example 进入相应的界面,一张图片的所有手势效果会被同样应用在另外一张图片上,你点击放大上面的一张图片,下面的图片就会跟着放大。
更换图片的例子
6.1 点击TouchImageView更换图片,注意图片的缩放状态会被保持。就是说如果当前图片没有缩放点击更换下一张图片也不会缩放,如果当前的图片放大了,点击更换下一张图片也会被放大,看效果
- 更换图片缩放类型的例子:点击图片更换支持的图片的缩放效果(关于缩放效果的文章可以看看这个http://blog.csdn.net/leilifengxingmw/article/details/50787831),行看看更换缩放类型的图片效果,就看两个。
以下是关于TouchImageView的一些说明
- 限制:TouchImageView不支持手势旋转,另外FIT_START 和FIT_END现在还不支持。
- 支持最小API 8.
- 使用方式:把TouchImageView.java复制到你的工程里,就可以像ImageView一样使用了,例如
TouchImageView img = (TouchImageView) findViewById(R.id.img);
如果你在xml文件里使用,那你必须使用完整的包名,因为TouchImageView 是一个自定义view。
<com.example.touch.TouchImageView
android:id="@+id/img”
android:layout_width="match_parent"
android:layout_height="match_parent" />
4.API
// 得到当前的缩放比。是和TouchImageView相关的所放比,而和原始的图片没有关系
float getCurrentZoom();
// 得到最大的缩放倍数.
float getMaxZoom();
// 得到最小的缩放倍数.
float getMinZoom();
// 返回可缩放图片的中心点。PointF的坐标在0到1之间,焦点以整个view的左上角的百分比来表示。例如,图片的左上角是(0,0),右下角是(1,1)。
PointF getScrollPosition();
// 返回代表缩放图片的矩形
RectF getZoomedRect();
// 如果图片初始化是没有缩放的状态,返回false,否则返回true;
boolean isZoomed();
// 重新设定缩放级别返回到初始化状态。
void resetZoom();
// 设置最大的缩放级别. 默认值是: 3.
void setMaxZoom(float max);
// 设置最小的缩放级别. 默认值是: 1.
void setMinZoom(float min);
// 设置图片的所放焦点。焦点以整个view的左上角为基准表示为百分比的形式取值为0到1之间。
void setScrollPosition(float focusX, float focusY);
// 设置特定级别的所放比。图片默认是放在整个view的中间
void setZoom(float scale);
// 设置特定级别的所放比。图片的中心点就是所设置的点的位置(focusX, focusY)。focusX和focusY以view的左上角为基准表示为取值0到1的百分比。例如,图片的左上角表示为(0,0),图片的右下角表示为(1,1)。
三个参数分别表示;缩放级别,横纵坐标。
void setZoom(float scale, float focusX, float focusY);
// 设置特定级别的所放比。图片的中心点就是所设置的点的位置(focusX, focusY)。focusX和focusY以view的左上角为基准表示为取值0到1的百分比。例如,图片的左上角表示为(0,0),图片的右下角表示为(1,1)。
四个参数分别表示;缩放级别,横纵坐标,缩放类型。
void setZoom(float scale, float focusX, float focusY, ScaleType scaleType);
// 设置和别的TouchImageView一样的缩放比。包括缩放级别,缩放位置和缩放的类型。
void setZoom(TouchImageView img);
//最后在列一下TouchImageView所支持的缩放类型的取值:
centerCrop,centerInside,fitXY,fitCenter,center。
Using TouchImageView with Glide library
在TouchImageView 结合Glide使用的时候遇到了这样一种情况:使用ViewPager+PagerAdapter 实现图片浏览的时候,在加载网络图片的时候,第一张图片不能正常加载。参考了github上的issure Using TouchImageView with Glide library,解决方法代码如下。
PagerAdapter的方法
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = LayoutInflater.from(context).inflate(R.layout.item_album_img, container, false);
final TouchImageView imageView = view.findViewById(R.id.img_main);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (albumClickListener != null) {
albumClickListener.onAlbumClick();
}
}
});
Glide.with(context).asBitmap().load(list.get(position)).into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
//调用这个方法即可正常显示,具体原因并不了解
imageView.setZoom(1);
}
});
container.addView(view);
return view;
}
结尾:
实话是说。翻译还是借助了有道词典,学了十几年的英语,都忘的差不多了,就会说一个Hello,Hi了,艰难。写的不好,大家多多包涵。
结尾:我们专业的学安卓的有在上海的。北京的。杭州的。工资有15000的,10000的。但是我们专业学安卓的还有在青岛即墨的。工资2000,就是我,也是艰难啊。还有2,3个月就毕业了,该考虑一下到底何去何从了。