/*
* Copyright (C) 2007 The Android Open Source Project
*
* 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.
*/
package com.android.camera;
import com.android.gallery.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Toast;
import android.widget.ZoomButtonsController;
import com.android.camera.gallery.IImage;
import com.android.camera.gallery.IImageList;
import com.android.camera.gallery.VideoObject;
import java.util.Random;
// This activity can display a whole picture and navigate them in a specific
// gallery. It has two modes: normal mode and slide show mode. In normal mode
// the user view one image at a time, and can click "previous" and "next"
// button to see the previous or next image. In slide show mode it shows one
// image after another, with some transition effect.
public class ViewImage extends NoSearchActivity implements View.OnClickListener {
private static final String PREF_SLIDESHOW_REPEAT =
"pref_gallery_slideshow_repeat_key";
private static final String PREF_SHUFFLE_SLIDESHOW =
"pref_gallery_slideshow_shuffle_key";
private static final String STATE_URI = "uri";
private static final String STATE_SLIDESHOW = "slideshow";
private static final String EXTRA_SLIDESHOW = "slideshow";
private static final String TAG = "ViewImage";
private ImageGetter mGetter;
private Uri mSavedUri;
boolean mPaused = true;
private boolean mShowControls = true;
// Choices for what adjacents to load.
private static final int[] sOrderAdjacents = new int[] {0, 1, -1};
private static final int[] sOrderSlideshow = new int[] {0};
final GetterHandler mHandler = new GetterHandler();
private final Random mRandom = new Random(System.currentTimeMillis());
private int [] mShuffleOrder = null;
private boolean mUseShuffleOrder = false;
private boolean mSlideShowLoop = false;
static final int MODE_NORMAL = 1;
static final int MODE_SLIDESHOW = 2;
private int mMode = MODE_NORMAL;
private boolean mFullScreenInNormalMode;
private boolean mShowActionIcons;
private View mActionIconPanel;
private int mSlideShowInterval;
private int mLastSlideShowImage;
int mCurrentPosition = 0;
// represents which style animation to use
private int mAnimationIndex;
private Animation [] mSlideShowInAnimation;
private Animation [] mSlideShowOutAnimation;
private SharedPreferences mPrefs;
private View mNextImageView;
private View mPrevImageView;
private final Animation mHideNextImageViewAnimation =
new AlphaAnimation(1F, 0F);
private final Animation mHidePrevImageViewAnimation =
new AlphaAnimation(1F, 0F);
private final Animation mShowNextImageViewAnimation =
new AlphaAnimation(0F, 1F);
private final Animation mShowPrevImageViewAnimation =
new AlphaAnimation(0F, 1F);
public static final String KEY_IMAGE_LIST = "image_list";
private static final String STATE_SHOW_CONTROLS = "show_controls";
IImageList mAllImages;
private ImageManager.ImageListParam mParam;
private int mSlideShowImageCurrent = 0;
private final ImageViewTouchBase [] mSlideShowImageViews =
new ImageViewTouchBase[2];
GestureDetector mGestureDetector;
private ZoomButtonsController mZoomButtonsController;
// The image view displayed for normal mode.
private ImageViewTouch mImageView;
// This is the cache for thumbnail bitmaps.
private BitmapCache mCache;
private MenuHelper.MenuItemsResult mImageMenuRunnable;
private final Runnable mDismissOnScreenControlRunner = new Runnable() {
public void run() {
hideOnScreenControls();
}
};
private void updateNextPrevControls() {
boolean showPrev = mCurrentPosition > 0;
boolean showNext = mCurrentPosition < mAllImages.getCount() - 1;
boolean prevIsVisible = mPrevImageView.getVisibility() == View.VISIBLE;
boolean nextIsVisible = mNextImageView.getVisibility() == View.VISIBLE;
if (showPrev && !prevIsVisible) {
Animation a = mShowPrevImageViewAnimation;
a.setDuration(500);
mPrevImageView.startAnimation(a);
mPrevImageView.setVisibility(View.VISIBLE);
} else if (!showPrev && prevIsVisible) {
Animation a = mHidePrevImageViewAnimation;
a.setDuration(500);
mPrevImageView.startAnimation(a);
mPrevImageView.setVisibility(View.GONE);
}
if (showNext && !nextIsVisible) {
Animation a = mShowNextImageViewAnimation;
a.setDuration(500);
mNextImageView.startAnimation(a);
mNextImageView.setVisibility(View.VISIBLE);
} else if (!showNext && nextIsVisible) {
Animation a = mHideNextImageViewAnimation;
a.setDuration(500);
mNextImageView.startAnimation(a);
mNextImageView.setVisibility(View.GONE);
}
}
private void hideOnScreenControls() {
if (mShowActionIcons
&& mActionIconPanel.getVisibility() == View.VISIBLE) {
Animation animation = new AlphaAnimation(1, 0);
animation.setDuration(500);
mActionIconPanel.startAnimation(animation);
mActionIconPanel.setVisibility(View.INVISIBLE);
}
if (mNextImageView.getVisibility() == View.VISIBLE) {
Animation a = mHideNextImageViewAnimation;
a.setDuration(500);
mNextImageView.startAnimation(a);
mNextImageView.setVisibility(View.INVISIBLE);
}
if (mPrevImageView.getVisibility() == View.VISIBLE) {
Animation a = mHidePrevImageViewAnimation;
a.setDuration(500);
mPrevImageView.startAnimation(a);
mPrevImageView.setVisibility(View.INVISIBLE);
}
mZoomButtonsController.setVisible(false);
}
private void showOnScreenControls() {
if (mPaused) return;
// If the view has not been attached to the window yet, the
// zoomButtonControls will not able to show up. So delay it until the
// view has attached to window.
if (mActionIconPanel.getWindowToken() == null) {
mHandler.postGetterCallback(new Runnable() {
public void run() {
showOnScreenControls();
}
});
return;
}
updateNextPrevControl
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android图片浏览源码 (273个子文件)
.classpath 388B
config 353B
description 73B
exclude 240B
HEAD 211B
HEAD 211B
HEAD 32B
HEAD 23B
pack-39d6410ea62c5adc9e46e9df19a39dc07c4df2b2.idx 41KB
index 25KB
ViewImage.java 46KB
GridViewSpecial.java 41KB
ImageGallery.java 37KB
MenuHelper.java 36KB
GalleryPicker.java 33KB
CropImage.java 29KB
ImageManager.java 18KB
HighlightView.java 16KB
Util.java 15KB
ImageViewTouchBase.java 13KB
ImageGetter.java 11KB
ImageListUber.java 10KB
MovieViewControl.java 9KB
BaseImageList.java 8KB
PhotoAppWidgetProvider.java 8KB
BitmapManager.java 6KB
BaseImage.java 5KB
UriImage.java 5KB
ImageLoader.java 5KB
Image.java 5KB
ImageList.java 5KB
EvenlySpacedLayout.java 5KB
BitmapManagerUnitTests.java 4KB
PhotoAppWidgetConfigure.java 4KB
VideoList.java 4KB
ImageListUberUnitTests.java 4KB
VideoObject.java 4KB
DrmImageList.java 3KB
MovieView.java 3KB
GalleryPickerItem.java 3KB
PhotoAppWidgetBind.java 3KB
ActionMenuButton.java 3KB
MonitoredActivity.java 3KB
IImage.java 3KB
DeleteImage.java 3KB
RotateBitmap.java 3KB
Wallpaper.java 3KB
LruCache.java 3KB
ReverseGeocoderTask.java 2KB
IImageList.java 2KB
LruCacheUnitTests.java 2KB
MockImage.java 2KB
SingleImageList.java 2KB
MockImageList.java 1KB
CameraLaunchPerformance.java 1KB
UnitTests.java 1KB
GallerySettings.java 1KB
NoSearchActivity.java 840B
PickWallpaper.java 831B
master 211B
master 41B
CleanSpec.mk 2KB
Android.mk 397B
Android.mk 334B
MODULE_LICENSE_APACHE2 0B
NOTICE 11KB
pack-39d6410ea62c5adc9e46e9df19a39dc07c4df2b2.pack 1.11MB
packed-refs 7KB
ic_launcher_camera.png 6KB
ic_btn_actionmenu_cancel_selected.png 6KB
ic_btn_actionmenu_cancel_pressed.png 6KB
ic_btn_actionmenu_attach_pressed.png 5KB
ic_btn_actionmenu_attach_selected.png 5KB
ic_btn_actionmenu_share_selected.png 5KB
ic_btn_actionmenu_share_pressed.png 5KB
ic_btn_actionmenu_attach_default.png 4KB
ic_btn_actionmenu_cancel_default.png 4KB
ic_btn_actionmenu_play_selected.png 4KB
ic_btn_actionmenu_set_as_pressed.png 4KB
ic_btn_actionmenu_set_as_selected.png 4KB
ic_btn_actionmenu_play_pressed.png 4KB
ic_error_mms_video_overlay.png 4KB
ic_launcher_gallery.png 4KB
ic_gallery_empty2.png 4KB
ic_btn_actionmenu_share_default.png 4KB
ic_menu_3d_globe.png 4KB
detail_photo_border.9.png 4KB
image_border_bg_focus_blue.9.png 4KB
ic_btn_actionmenu_set_as_default.png 3KB
ic_btn_actionmenu_delete_selected.png 3KB
ic_btn_actionmenu_delete_pressed.png 3KB
image_border_bg_normal.9.png 3KB
image_border_bg_pressed_blue.9.png 3KB
indicator_autocrop.png 3KB
ic_btn_actionmenu_play_default.png 3KB
indicator_autocrop.png 3KB
frame_gallery_preview_album.png 3KB
ic_btn_actionmenu_attach_selected.png 3KB
ic_btn_actionmenu_attach_pressed.png 3KB
frame_gallery_preview_album_pressed.png 3KB
共 273 条
- 1
- 2
- 3
资源评论
- 倒转流年只为2013-05-20提示android.jar缺少,加上也不行
- 疯狂的小七12015-03-28没法用,坑人的
- RaleighLuo2014-04-09还不错,不过还是需要修改一些内容才能运行
- 边缘星2013-09-17运行不了 没办法找到错误 看来是自己太菜了
- creatymilk2013-12-28还不错,不过还是需要修改一些内容才能运行
muchmore_it
- 粉丝: 4
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功