/[projects]/android/Side9/src/dk/thoerup/side9/PictureView.java
ViewVC logotype

Annotation of /android/Side9/src/dk/thoerup/side9/PictureView.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1187 - (hide annotations) (download)
Sat Nov 6 06:42:09 2010 UTC (13 years, 6 months ago) by torben
File size: 3418 byte(s)
Fix launch of built-in viewer 

Bump version to 19
1 torben 925 package dk.thoerup.side9;
2    
3 torben 1185
4 torben 925 import java.util.ArrayList;
5    
6     import android.app.Activity;
7 torben 926 import android.content.Intent;
8 torben 925 import android.graphics.Bitmap;
9     import android.graphics.BitmapFactory;
10 torben 926 import android.net.Uri;
11 torben 925 import android.os.Bundle;
12     import android.util.Log;
13 torben 926 import android.view.Menu;
14     import android.view.MenuItem;
15 torben 925 import android.view.MotionEvent;
16     import android.view.View;
17     import android.widget.ImageView;
18     import android.widget.TextView;
19    
20     public class PictureView extends Activity {
21 torben 926 final static int CONTEXT_VIEWIMG = 1000;
22 torben 925
23     final static String TAG = "Side9Pigen";
24    
25     TextView mDescription;
26     TextView mCaption;
27     ImageView mImageView;
28 torben 1187 ArrayList<ImageEntry> mImages;
29 torben 925 int mIndex;
30    
31    
32     Bitmap mBitmap;
33    
34     @SuppressWarnings("unchecked")
35     @Override
36     public void onCreate(Bundle savedInstanceState) {
37     super.onCreate(savedInstanceState);
38     setContentView(R.layout.pictureview);
39    
40 torben 1187 mImages = (ArrayList<ImageEntry>) getIntent().getSerializableExtra("images");
41 torben 925 mIndex = getIntent().getIntExtra("index", 0);
42    
43    
44     mImageView = (ImageView) findViewById(R.id.imageview);
45     mImageView.setOnTouchListener( new Touch() );
46 torben 926
47     mCaption = (TextView) findViewById(R.id.caption);
48 torben 925 mDescription = (TextView) findViewById(R.id.description);
49    
50 torben 926
51 torben 925 loadImage();
52    
53     }
54    
55 torben 926
56    
57 torben 925 private void loadImage(int newIndex) {
58     Log.e(TAG, "NewIndex " + newIndex);
59     if (newIndex != mIndex) {
60     mIndex = newIndex;
61     loadImage();
62     }
63     }
64    
65     private void loadImage() {
66 torben 1187 ImageEntry currentImage = mImages.get(mIndex);
67 torben 1185 mBitmap = BitmapFactory.decodeFile( currentImage.path );
68 torben 925 mImageView.setImageBitmap(mBitmap);
69 torben 1185
70 torben 925
71 torben 1185 if (currentImage.caption.length() > 0) {
72 torben 925 mCaption.setVisibility(View.VISIBLE);
73 torben 1185 mCaption.setText(currentImage.caption);
74 torben 925 } else {
75     mCaption.setVisibility(View.INVISIBLE);
76     }
77 torben 1185
78     String pathParts[] = currentImage.path.split("/");
79     String fileName = pathParts[ pathParts.length -1];
80 torben 1187 String desc = "" + (mIndex +1) + "/" + mImages.size() + " - " + fileName;
81 torben 1185 mDescription.setText(desc);
82 torben 925 }
83    
84 torben 926
85 torben 925
86 torben 926 @Override
87     public boolean onCreateOptionsMenu(Menu menu) {
88     MenuItem item = menu.add(Menu.NONE, CONTEXT_VIEWIMG, Menu.NONE, "Built-in viewer");
89     item.setIcon( android.R.drawable.ic_menu_gallery);
90     return true;
91     }
92    
93    
94    
95     @Override
96     public boolean onOptionsItemSelected(MenuItem item) {
97     boolean res;
98    
99     switch(item.getItemId()) {
100     case CONTEXT_VIEWIMG:
101 torben 1187 String uri = "file://" + mImages.get(mIndex).path;
102 torben 926
103     Intent i = new Intent(Intent.ACTION_VIEW);
104     i.setDataAndType(Uri.parse(uri), "image/jpeg");
105     startActivity(i);
106     res = true;
107     break;
108     default:
109     res = super.onOptionsItemSelected(item);
110     }
111    
112     return res;
113     }
114    
115 torben 925 class Touch implements View.OnTouchListener {
116    
117     Float firstX = null;
118    
119    
120     @Override
121     public boolean onTouch(View v, MotionEvent event) {
122     if (event.getAction() == MotionEvent.ACTION_DOWN) {
123     firstX = event.getX();
124     } else {
125     if (firstX != null) {
126     float x = event.getX();
127     float diff = firstX - x;
128    
129     if (diff > 150) {
130 torben 1187 int newIndex = Math.min(mIndex+1, mImages.size() -1);
131 torben 925 loadImage(newIndex);
132     firstX = null;
133     return false;
134     }
135    
136     if (diff < -150) {
137     int newIndex = Math.max(mIndex-1, 0);
138     loadImage(newIndex);
139     firstX = null;
140     return false;
141     }
142     }
143     }
144    
145     return true;
146     }
147    
148     }
149     }

  ViewVC Help
Powered by ViewVC 1.1.20