androidgallery放大
A. 求教android 系統中圖庫裡面那種放大後還可以拖動切換下一張圖片的效果是怎麼實現的。
好像不可以的...還是雙擊一下,讓圖片回復原來的大小,然後滑動屏幕切換圖片。
B. android gallery如何動態添加圖片 Integer[] images = { R.drawable.1,R.drawable.2} 這是我寫死的數組
拍照調用camera.takePicture(shutter, pc1, pc2)方法;
我們可以第3個參數中處理一下。
private PictureCallback pc2 = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
// 存儲相片-Decode an immutable(不變的) bitmap from the specified byte
// array.
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
FileOutputStream out = null;
try {
out = new FileOutputStream("/sdcard/pic_1.jpg");
BufferedOutputStream bos = new BufferedOutputStream(out);
bitmap.compress(CompressFormat.JPEG, 80, bos);// 壓縮圖片
bos.flush();
bos.close();
out.close();
iv.setImageBitmap(bitmap);//iv是一個imageView
stopCamera();// 關閉照相機
init();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
C. Android Gallery setSelection和onFling方法的區別
讓gallery自動滾動可以通過以下兩種方法實現:
一、使用Timer和TimerTask類來完成圖片的自動定時滾動:
思路:循環調用Gallery類的onFling()方法。
代碼:
<span style="white-space:pre"> </span>task = new TimerTask() {
@Override
public void run() {
/**
* 參數1和2:手指在gallery上的動作
* 參數3和4:x方向和y方向的滾動的速度,-數表示向左滾,+數表示向右
*/
gallery.onFling(null, null, -750, 0);
}
};
timer.schele(task, 1000, 5000);
<span style="font-size:32px;"><strong>
</strong></span>
<span style="font-size:32px;"><strong>方式2:</strong></span>
二、使用Handler消息機制完成
思路:子線程內死循環使用handler每隔多長時間向主線程發送消息,通知gallery改變位置。
代碼:
子線程部分:
<span style="white-space:pre"> new Thread(new Runnable() {
<span style="white-space:pre"> </span>int flag = 1;
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void run() {
<span style="white-space:pre"> </span>while (isalive) {
<span style="white-space:pre"> </span>//images為裝圖片的集合
<span style="white-space:pre"> </span>if ((cur_index + 1) == images.size()) {
<span style="white-space:pre"> </span>flag = -1;
<span style="white-space:pre"> </span>} else if (cur_index == 0) {
<span style="white-space:pre"> </span>flag = 1;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>Message msg = handler.obtainMessage(MSG_UPDATE, cur_index,
<span style="white-space:pre"> </span>0);
<span style="white-space:pre"> </span>handler.sendMessage(msg);
<span style="white-space:pre"> </span>try {
<span style="white-space:pre"> </span>Thread.sleep(4000);
<span style="white-space:pre"> </span>} catch (InterruptedException e) {
<span style="white-space:pre"> </span>e.printStackTrace();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>switch (flag) {
<span style="white-space:pre"> </span>case 1:
<span style="white-space:pre"> </span>cur_index++;
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>case -1:
<span style="white-space:pre"> </span>cur_index--;
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}).start();</span>
主線程部分:
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == MSG_UPDATE) {
gallery.setSelection(msg.arg1);
}
}
};