1.首先看一下效果
1.1做成了一个GIF
1.2.我用格式工厂有点问题,大小无法调到手机这样的大小,目前还没有解决方案。
1.3.网上有免费的MP4->GIF,参考一下这个网站吧。
1.4.讲解一下这个图片吧,首先是从话题中点击了其中一张图片,进入图片Activity,然后可以自由放大,自由翻转。
2.分析一下继承的BaseImageActivity
2.1因为ImageActivity继承了BaseImageActivtiy,首先看看源代码。
/* * Copyright 2017 GcsSloop * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Last modified 2017-03-15 20:02:59 * * GitHub: https://github.com/GcsSloop * Website: http://www.gcssloop.com * Weibo: http://weibo.com/GcsSloop */ package com.gcssloop.diycode.base.app; import android.content.Intent; import java.util.ArrayList; /** * 对数据进行预处理 */ public abstract class BaseImageActivity extends BaseActivity { public static final String ALL_IMAGE_URLS = "all_images"; public static final String CURRENT_IMAGE_URL = "current_image"; protected static final String MODE_NORMAL = "normal"; protected static final String MODE_ERROR = "error"; protected String mCurrentMode = MODE_NORMAL; protected ArrayList<String> images = new ArrayList<>(); // 所有图片 protected String current_image_url = null; // 当前图片 protected int current_image_position = 0; // 当前图片位置 @Override protected void initDatas() { super.initDatas(); // 初始化图片 url 和 图片集合,保证两个数据都存在 Intent intent = getIntent(); // 没有传递当前图片,设置模式为错误 String imageUrl = intent.getStringExtra(CURRENT_IMAGE_URL); if (imageUrl == null || imageUrl.isEmpty()) { toastShort("没有传递图片链接"); mCurrentMode = MODE_ERROR; return; } mCurrentMode = MODE_NORMAL; ArrayList<String> temp = intent.getStringArrayListExtra(ALL_IMAGE_URLS); if (temp == null || temp.size() <= 0) { // 记录当前图片,计算位置 images.clear(); images.add(imageUrl); } else if (temp.size() > 0) { // 如果图片集合大于0 images = new ArrayList<>(temp); } if (!images.contains(imageUrl)) { images.add(imageUrl); } current_image_url = imageUrl; current_image_position = images.indexOf(current_image_url); } }
2.2
3.一些示例文字
第三段
4.一些示例文字
第四段
5.一些示例文字
第五段
6.一些示例文字
第六段