android手机图片查看
2013-05-05 15:32
281 查看
自学android半年,貌似还没有给自己做过一款app,利用晚上时间写写;
可以实现android间远程查看图片功效,没wifi,就模拟器玩玩;还有些bug,细微之处,现在赶公司项目,没时间了
zip代码在资源中 http://download.csdn.net/detail/l445695623/5333286
服务端主代码:
package com.gos.socketserver;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.gos.socketserver.tools.GalleryFlow;
import com.gos.socketserver.tools.ImageAdapter;
import com.gos.socketserver.tools.StreamToByte;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class SocketServer extends Activity {
private ServerSocket socketServer;
private ImageView showpic;
private Bitmap bitmap;
private ImageAdapter adapter;
private GalleryFlow galleryFlow;
private List<String> listpath;
private boolean flagsd;
private BroadcastReceiver usbStateReceiver;
private Handler refrest_image = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 1) {
if(flagsd){
listpath=new ArrayList<String>();
initGallery();
}else{
showpic.setImageBitmap(bitmap);
}
}
}
};
// 去除特定文件
public static FilenameFilter deleteFileFilter() {
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.equals("LOST.DIR")
|| name.equals(".android_secure");
return !ret;
}
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.socket_server);
initVar();
initGallery();
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
socketServer = new ServerSocket(5554);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while (true) {
int i = 0;
i++;
try {
Socket socket = socketServer.accept();
InputStream inputstream = socket.getInputStream();
bitmap = BitmapFactory.decodeStream(inputstream);
// 如果存在sd卡
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = Environment
.getExternalStorageDirectory();
Log.i("Main", file.getPath());
saveImageToSD();
} else {
}
Message msg = new Message();
msg.what = 1;
msg.obj = bitmap;
refrest_image.sendMessage(msg);
socket.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
//拔插U盘重启当前activity
usbStateReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses(getPackageName());
}
};
IntentFilter usbfilter = new IntentFilter();
usbfilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
usbfilter.addAction(Intent.ACTION_MEDIA_CHECKING);
usbfilter.addAction(Intent.ACTION_MEDIA_EJECT);
usbfilter.addAction(Intent.ACTION_MEDIA_REMOVED);
usbfilter.addDataScheme("file");
registerReceiver(usbStateReceiver, usbfilter);
}
private void initGallery() {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
String filedirc1 = Environment.getExternalStorageDirectory()
+ File.separator + "romoteImage";
File fileImages = new File(filedirc1);
if (fileImages.exists()
&& fileImages.listFiles(deleteFileFilter()).length != 0) {
searchFiles(fileImages);
adapter = new ImageAdapter(this,listpath);
adapter.createReflectedImages();
galleryFlow.setAdapter(adapter);
galleryFlow.setSelection(adapter.getCount()-1);
}
flagsd=true;
showpic.setVisibility(4);
galleryFlow.setVisibility(0);
} else {
Toast.makeText(SocketServer.this, "请插入SD卡", 0).show();
flagsd=false;
galleryFlow.setVisibility(4);
showpic.setVisibility(0);
}
}
/**
* 保存图片到sd卡
*
* @param inputstream
*/
private void saveImageToSD() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("HH-mm-ss");
String filedirc = Environment.getExternalStorageDirectory()
+ File.separator + "romoteImage";
String image = filedirc + File.separator + sdf.format(new Date())
+ ".png";
File fileImage = new File(filedirc);
if (!fileImage.exists()) {
fileImage.mkdirs();
}
File subfileImage = new File(image);
if (!subfileImage.exists()) {
subfileImage.createNewFile();
}
FileOutputStream out = new FileOutputStream(subfileImage);
bitmap.compress(CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
protected void chooseOpen(String content) {
// TODO Auto-generated method stub
if (content.startsWith("http://")) {
Uri uri = Uri.parse(content);
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(uri);
startActivity(it);
}
}
/**
* 初始化变量
*/
private void initVar() {
// TODO Auto-generated method stub
showpic = (ImageView) findViewById(R.id.imageview);
listpath = new ArrayList<String>();
galleryFlow = (GalleryFlow) findViewById(R.id.gallery_flow);
}
/**
* 搜索sd卡中所有图片,路径
*/
private void searchFiles(File f) {
// TODO Auto-generated method stub
File files[] = f.listFiles(deleteFileFilter());
for (File tempF : files) {
if (tempF.isDirectory()) {
searchFiles(tempF);
} else {
String path = tempF.getPath();
String fpath = path.substring(path.lastIndexOf(".") + 1,
path.length());
if (fpath.equals("png") || fpath.equals("jpg")) {
listpath.add(path);
Log.i("Main", path);
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.socket_server, menu);
return true;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(usbStateReceiver);
}
}
客户端主代码
package com.Remote.remoteview;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import com.Remote.remoteview.adapter.GalleryAdapter;
import com.Remote.remoteview.adapter.ListViewAdapter;
import com.Remote.remoteview.tool.StreamToByte;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AbsListView;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends Activity implements OnGestureListener{
private ListView listview_1, listview_2, listview_3;
private List<String> picfilepath;
private List<String> newfilepath;
private Context context;
private ListViewAdapter listadapter_1, listadapter_2, listadapter_3;
private List<String> filepath_1, filepath_2, filepath_3;
private WindowManager windowM;
private Dialog dialog;// 弹出的对话框
private Gallery gallery;
private GalleryAdapter galleryadapter;
private MediaPlayer mediaplay;
private boolean isplay = true;// 判断是否播放
private boolean threadrun = true;// 判断线程
private int flag = 0;
private int flag2 = 1;
private int flag3 = 0;
private boolean isrun = false;
private GestureDetector guesturede;
// 是否设为长亮
private boolean lighton = true;
private Handler handler_position = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 1) {
int j;
if (flag % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_1.smoothScrollByOffset(j);
}
if (msg.what == 2) {
int j;
if (flag2 % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_2.smoothScrollByOffset(j);
}
if (msg.what == 3) {
int j;
if (flag3 % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_3.smoothScrollByOffset(j);
}
}
};
// 去除特定文件
public static FilenameFilter deleteFileFilter() {
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.equals("LOST.DIR")
|| name.equals(".android_secure");
return !ret;
}
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
guesturede=new GestureDetector(this);
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = Environment.getExternalStorageDirectory();
Log.i("Main", file.getPath());
searchFiles(file);
// 设置宽度
// int width=windowM.getDefaultDisplay().getWidth();
// int each_width=(int)width/3;
//
// listview_1.setLayoutParams(new
// RelativeLayout.LayoutParams(each_width,
// RelativeLayout.LayoutParams.MATCH_PARENT));
//
// fiterPicture(picfilepath);
// 分别初始化listrviewdapter
for (int i = 0; i < picfilepath.size(); i++) {
switch (i % 3) {
case 0:
filepath_1.add(picfilepath.get(i));
break;
case 1:
filepath_2.add(picfilepath.get(i));
break;
case 2:
filepath_3.add(picfilepath.get(i));
break;
}
}
// 初始化adapter
listadapter_1 = new ListViewAdapter(context, filepath_1, windowM);
listadapter_2 = new ListViewAdapter(context, filepath_2, windowM);
listadapter_3 = new ListViewAdapter(context, filepath_3, windowM);
// 初始化listview
listview_1.setAdapter(listadapter_1);
listview_2.setAdapter(listadapter_2);
listview_3.setAdapter(listadapter_3);
// 注册长按事件
setLongClick();
// 注册点击事件
setClick();
// 设置滚动
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
while (threadrun) {
try {
Thread.sleep(900);
if (isrun) {
Message msg = handler_position.obtainMessage(1);
handler_position.sendMessage(msg);
Message msg2 = handler_position
.obtainMessage(2);
handler_position.sendMessage(msg2);
Message msg3 = handler_position
.obtainMessage(3);
handler_position.sendMessage(msg3);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
// 判断滑到底部
listview_1.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_1.getLastVisiblePosition() == (listadapter_1
.getCount() - 1)) {
flag = 1;
}
// 判断滚动到顶部
if (listview_1.getFirstVisiblePosition() == 0) {
flag = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 判断滑到底部
listview_2.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_2.getLastVisiblePosition() == (listadapter_2
.getCount() - 1)) {
flag2 = 1;
}
// 判断滚动到顶部
if (listview_2.getFirstVisiblePosition() == 0) {
flag2 = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 判断滑到底部
listview_3.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_3.getLastVisiblePosition() == (listadapter_3
.getCount() - 1)) {
flag3 = 1;
}
// 判断滚动到顶部
if (listview_3.getFirstVisiblePosition() == 0) {
flag3 = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 触摸停止滚动
OnTouchImpl outouchListener = new OnTouchImpl();
listview_1.setOnTouchListener(outouchListener);
listview_2.setOnTouchListener(outouchListener);
listview_3.setOnTouchListener(outouchListener);
Dialog dialog1 = new AlertDialog.Builder(MainActivity.this)
.setTitle("提示基友|丽友")
.setMessage("更多优惠尽在菜单选项")
.create();
dialog1.show();
} else {
Toast.makeText(context, "SD卡不存在,请插入手机SD卡", 0).show();
}
}
private class OnTouchImpl implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
isrun = false;
return false;
}
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(Menu.NONE, Menu.FIRST + 1, 1, "自动播放").setIcon(
R.drawable.play_icon);
menu.add(Menu.NONE, Menu.FIRST + 2, 2, "停止播放").setIcon(
R.drawable.pause_icon);
menu.add(Menu.NONE, Menu.FIRST + 3, 3, "开启长亮").setIcon(
R.drawable.onlight);
menu.add(Menu.NONE, Menu.FIRST + 4, 4, "背景音乐")
.setIcon(R.drawable.music);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case Menu.FIRST + 1:
isrun = true;
break;
case Menu.FIRST + 2:
isrun = false;
break;
case Menu.FIRST + 3:
getWindow()
.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
break;
case Menu.FIRST + 4:
try {
if (isplay) {
AssetFileDescriptor afd = getAssets().openFd("home.mp3");
mediaplay = new MediaPlayer();
mediaplay.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
mediaplay.prepareAsync();
mediaplay.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaplay.start();
}
});
// 注册播放完毕后的监听事件
mediaplay
.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mediaplay.release();
mediaplay = null;
isplay = true;
mediaplay.seekTo(0);
}
});
isplay = false;
} else {
if (mediaplay != null && mediaplay.isPlaying()) {
mediaplay.stop();
mediaplay = null;
isplay = true;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
return false;
}
/**
* 初始化变量
*/
private void init() {
// TODO Auto-generated method stub
listview_1 = (ListView) findViewById(R.id.listview_1);
listview_2 = (ListView) findViewById(R.id.listview_2);
listview_3 = (ListView) findViewById(R.id.listview_3);
picfilepath = new ArrayList<String>();
filepath_1 = new ArrayList<String>();
filepath_2 = new ArrayList<String>();
filepath_3 = new ArrayList<String>();
context = MainActivity.this;
windowM = getWindowManager();
dialog = null;
}
/**
* 搜索sd卡中所有图片,路径
*/
private void searchFiles(File f) {
// TODO Auto-generated method stub
File files[] = f.listFiles(deleteFileFilter());
for (File tempF : files) {
if (tempF.isDirectory()) {
searchFiles(tempF);
} else {
String path = tempF.getPath();
String filename=tempF.getName();
String fpath = path.substring(path.lastIndexOf(".") + 1,
path.length());
if (fpath.equals("png") || fpath.equals("jpg")) {
picfilepath.add(path);
Log.i("Main", path);
}
}
}
}
/**
* 过滤掉小图片
*/
private void fiterPicture(List<String> listpath) {
Bitmap bitmap = null;
newfilepath = new ArrayList<String>();
for (String path : listpath) {
if (getBitmap(path) != null) {
bitmap = getBitmap(path);
if (bitmap.getWidth() > 10 && bitmap.getHeight() > 10) {
newfilepath.add(path);
}
}
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
}
picfilepath = newfilepath;
}
/**
*
* @param path
* @return
*/
private InputStream getInputStream(String path) {
InputStream buf = null;
try {
buf = new FileInputStream(path);
} catch (Exception e) {
e.printStackTrace();
}
return buf;
}
/**
* 发送图片信息
*
* @param inputStream
*/
protected void sendPicture(final InputStream inputStream) {
// TODO Auto-generated method stub
try {
Socket socket = new Socket("192.168.1.234", 5554);
OutputStream out = socket.getOutputStream();
out.write(StreamToByte.getBytes(inputStream));
out.flush();
out.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 长按事件
*/
private void setLongClick() {
listview_1.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_1.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
listview_2.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_2.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
listview_3.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_3.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
}
/**
* @param path
* @return
*/
private Bitmap getBitmap(String path) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeFile(path);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
/**
* 单击事件
*/
private void setClick() {
// TODO Auto-generated method stub
listview_1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_1.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
// gallery=(Gallery)view1.findViewById(R.id.gallery);
// galleryadapter=new GalleryAdapter(context, filepath_1);
// gallery.setAdapter(galleryadapter);
// gallery.setSelection(position);
// galleryadapter.setSelected(position);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
listview_2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_2.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
listview_3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_3.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mediaplay!=null)
{
mediaplay.stop();
mediaplay = null;
}
threadrun = false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.i("Main", "sssssssssssss");
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return guesturede.onTouchEvent(event);
}
}
可以实现android间远程查看图片功效,没wifi,就模拟器玩玩;还有些bug,细微之处,现在赶公司项目,没时间了
zip代码在资源中 http://download.csdn.net/detail/l445695623/5333286
服务端主代码:
package com.gos.socketserver;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.gos.socketserver.tools.GalleryFlow;
import com.gos.socketserver.tools.ImageAdapter;
import com.gos.socketserver.tools.StreamToByte;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class SocketServer extends Activity {
private ServerSocket socketServer;
private ImageView showpic;
private Bitmap bitmap;
private ImageAdapter adapter;
private GalleryFlow galleryFlow;
private List<String> listpath;
private boolean flagsd;
private BroadcastReceiver usbStateReceiver;
private Handler refrest_image = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 1) {
if(flagsd){
listpath=new ArrayList<String>();
initGallery();
}else{
showpic.setImageBitmap(bitmap);
}
}
}
};
// 去除特定文件
public static FilenameFilter deleteFileFilter() {
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.equals("LOST.DIR")
|| name.equals(".android_secure");
return !ret;
}
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.socket_server);
initVar();
initGallery();
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
socketServer = new ServerSocket(5554);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while (true) {
int i = 0;
i++;
try {
Socket socket = socketServer.accept();
InputStream inputstream = socket.getInputStream();
bitmap = BitmapFactory.decodeStream(inputstream);
// 如果存在sd卡
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = Environment
.getExternalStorageDirectory();
Log.i("Main", file.getPath());
saveImageToSD();
} else {
}
Message msg = new Message();
msg.what = 1;
msg.obj = bitmap;
refrest_image.sendMessage(msg);
socket.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
//拔插U盘重启当前activity
usbStateReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses(getPackageName());
}
};
IntentFilter usbfilter = new IntentFilter();
usbfilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
usbfilter.addAction(Intent.ACTION_MEDIA_CHECKING);
usbfilter.addAction(Intent.ACTION_MEDIA_EJECT);
usbfilter.addAction(Intent.ACTION_MEDIA_REMOVED);
usbfilter.addDataScheme("file");
registerReceiver(usbStateReceiver, usbfilter);
}
private void initGallery() {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
String filedirc1 = Environment.getExternalStorageDirectory()
+ File.separator + "romoteImage";
File fileImages = new File(filedirc1);
if (fileImages.exists()
&& fileImages.listFiles(deleteFileFilter()).length != 0) {
searchFiles(fileImages);
adapter = new ImageAdapter(this,listpath);
adapter.createReflectedImages();
galleryFlow.setAdapter(adapter);
galleryFlow.setSelection(adapter.getCount()-1);
}
flagsd=true;
showpic.setVisibility(4);
galleryFlow.setVisibility(0);
} else {
Toast.makeText(SocketServer.this, "请插入SD卡", 0).show();
flagsd=false;
galleryFlow.setVisibility(4);
showpic.setVisibility(0);
}
}
/**
* 保存图片到sd卡
*
* @param inputstream
*/
private void saveImageToSD() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("HH-mm-ss");
String filedirc = Environment.getExternalStorageDirectory()
+ File.separator + "romoteImage";
String image = filedirc + File.separator + sdf.format(new Date())
+ ".png";
File fileImage = new File(filedirc);
if (!fileImage.exists()) {
fileImage.mkdirs();
}
File subfileImage = new File(image);
if (!subfileImage.exists()) {
subfileImage.createNewFile();
}
FileOutputStream out = new FileOutputStream(subfileImage);
bitmap.compress(CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
protected void chooseOpen(String content) {
// TODO Auto-generated method stub
if (content.startsWith("http://")) {
Uri uri = Uri.parse(content);
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(uri);
startActivity(it);
}
}
/**
* 初始化变量
*/
private void initVar() {
// TODO Auto-generated method stub
showpic = (ImageView) findViewById(R.id.imageview);
listpath = new ArrayList<String>();
galleryFlow = (GalleryFlow) findViewById(R.id.gallery_flow);
}
/**
* 搜索sd卡中所有图片,路径
*/
private void searchFiles(File f) {
// TODO Auto-generated method stub
File files[] = f.listFiles(deleteFileFilter());
for (File tempF : files) {
if (tempF.isDirectory()) {
searchFiles(tempF);
} else {
String path = tempF.getPath();
String fpath = path.substring(path.lastIndexOf(".") + 1,
path.length());
if (fpath.equals("png") || fpath.equals("jpg")) {
listpath.add(path);
Log.i("Main", path);
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.socket_server, menu);
return true;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(usbStateReceiver);
}
}
客户端主代码
package com.Remote.remoteview;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import com.Remote.remoteview.adapter.GalleryAdapter;
import com.Remote.remoteview.adapter.ListViewAdapter;
import com.Remote.remoteview.tool.StreamToByte;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AbsListView;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends Activity implements OnGestureListener{
private ListView listview_1, listview_2, listview_3;
private List<String> picfilepath;
private List<String> newfilepath;
private Context context;
private ListViewAdapter listadapter_1, listadapter_2, listadapter_3;
private List<String> filepath_1, filepath_2, filepath_3;
private WindowManager windowM;
private Dialog dialog;// 弹出的对话框
private Gallery gallery;
private GalleryAdapter galleryadapter;
private MediaPlayer mediaplay;
private boolean isplay = true;// 判断是否播放
private boolean threadrun = true;// 判断线程
private int flag = 0;
private int flag2 = 1;
private int flag3 = 0;
private boolean isrun = false;
private GestureDetector guesturede;
// 是否设为长亮
private boolean lighton = true;
private Handler handler_position = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 1) {
int j;
if (flag % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_1.smoothScrollByOffset(j);
}
if (msg.what == 2) {
int j;
if (flag2 % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_2.smoothScrollByOffset(j);
}
if (msg.what == 3) {
int j;
if (flag3 % 2 == 0) {
j = 1;
} else {
j = -1;
}
listview_3.smoothScrollByOffset(j);
}
}
};
// 去除特定文件
public static FilenameFilter deleteFileFilter() {
return new FilenameFilter() {
public boolean accept(File file, String name) {
boolean ret = name.equals("LOST.DIR")
|| name.equals(".android_secure");
return !ret;
}
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
guesturede=new GestureDetector(this);
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = Environment.getExternalStorageDirectory();
Log.i("Main", file.getPath());
searchFiles(file);
// 设置宽度
// int width=windowM.getDefaultDisplay().getWidth();
// int each_width=(int)width/3;
//
// listview_1.setLayoutParams(new
// RelativeLayout.LayoutParams(each_width,
// RelativeLayout.LayoutParams.MATCH_PARENT));
//
// fiterPicture(picfilepath);
// 分别初始化listrviewdapter
for (int i = 0; i < picfilepath.size(); i++) {
switch (i % 3) {
case 0:
filepath_1.add(picfilepath.get(i));
break;
case 1:
filepath_2.add(picfilepath.get(i));
break;
case 2:
filepath_3.add(picfilepath.get(i));
break;
}
}
// 初始化adapter
listadapter_1 = new ListViewAdapter(context, filepath_1, windowM);
listadapter_2 = new ListViewAdapter(context, filepath_2, windowM);
listadapter_3 = new ListViewAdapter(context, filepath_3, windowM);
// 初始化listview
listview_1.setAdapter(listadapter_1);
listview_2.setAdapter(listadapter_2);
listview_3.setAdapter(listadapter_3);
// 注册长按事件
setLongClick();
// 注册点击事件
setClick();
// 设置滚动
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
while (threadrun) {
try {
Thread.sleep(900);
if (isrun) {
Message msg = handler_position.obtainMessage(1);
handler_position.sendMessage(msg);
Message msg2 = handler_position
.obtainMessage(2);
handler_position.sendMessage(msg2);
Message msg3 = handler_position
.obtainMessage(3);
handler_position.sendMessage(msg3);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
// 判断滑到底部
listview_1.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_1.getLastVisiblePosition() == (listadapter_1
.getCount() - 1)) {
flag = 1;
}
// 判断滚动到顶部
if (listview_1.getFirstVisiblePosition() == 0) {
flag = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 判断滑到底部
listview_2.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_2.getLastVisiblePosition() == (listadapter_2
.getCount() - 1)) {
flag2 = 1;
}
// 判断滚动到顶部
if (listview_2.getFirstVisiblePosition() == 0) {
flag2 = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 判断滑到底部
listview_3.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (listview_3.getLastVisiblePosition() == (listadapter_3
.getCount() - 1)) {
flag3 = 1;
}
// 判断滚动到顶部
if (listview_3.getFirstVisiblePosition() == 0) {
flag3 = 0;
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
// 触摸停止滚动
OnTouchImpl outouchListener = new OnTouchImpl();
listview_1.setOnTouchListener(outouchListener);
listview_2.setOnTouchListener(outouchListener);
listview_3.setOnTouchListener(outouchListener);
Dialog dialog1 = new AlertDialog.Builder(MainActivity.this)
.setTitle("提示基友|丽友")
.setMessage("更多优惠尽在菜单选项")
.create();
dialog1.show();
} else {
Toast.makeText(context, "SD卡不存在,请插入手机SD卡", 0).show();
}
}
private class OnTouchImpl implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
isrun = false;
return false;
}
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(Menu.NONE, Menu.FIRST + 1, 1, "自动播放").setIcon(
R.drawable.play_icon);
menu.add(Menu.NONE, Menu.FIRST + 2, 2, "停止播放").setIcon(
R.drawable.pause_icon);
menu.add(Menu.NONE, Menu.FIRST + 3, 3, "开启长亮").setIcon(
R.drawable.onlight);
menu.add(Menu.NONE, Menu.FIRST + 4, 4, "背景音乐")
.setIcon(R.drawable.music);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case Menu.FIRST + 1:
isrun = true;
break;
case Menu.FIRST + 2:
isrun = false;
break;
case Menu.FIRST + 3:
getWindow()
.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
break;
case Menu.FIRST + 4:
try {
if (isplay) {
AssetFileDescriptor afd = getAssets().openFd("home.mp3");
mediaplay = new MediaPlayer();
mediaplay.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
mediaplay.prepareAsync();
mediaplay.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaplay.start();
}
});
// 注册播放完毕后的监听事件
mediaplay
.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mediaplay.release();
mediaplay = null;
isplay = true;
mediaplay.seekTo(0);
}
});
isplay = false;
} else {
if (mediaplay != null && mediaplay.isPlaying()) {
mediaplay.stop();
mediaplay = null;
isplay = true;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
return false;
}
/**
* 初始化变量
*/
private void init() {
// TODO Auto-generated method stub
listview_1 = (ListView) findViewById(R.id.listview_1);
listview_2 = (ListView) findViewById(R.id.listview_2);
listview_3 = (ListView) findViewById(R.id.listview_3);
picfilepath = new ArrayList<String>();
filepath_1 = new ArrayList<String>();
filepath_2 = new ArrayList<String>();
filepath_3 = new ArrayList<String>();
context = MainActivity.this;
windowM = getWindowManager();
dialog = null;
}
/**
* 搜索sd卡中所有图片,路径
*/
private void searchFiles(File f) {
// TODO Auto-generated method stub
File files[] = f.listFiles(deleteFileFilter());
for (File tempF : files) {
if (tempF.isDirectory()) {
searchFiles(tempF);
} else {
String path = tempF.getPath();
String filename=tempF.getName();
String fpath = path.substring(path.lastIndexOf(".") + 1,
path.length());
if (fpath.equals("png") || fpath.equals("jpg")) {
picfilepath.add(path);
Log.i("Main", path);
}
}
}
}
/**
* 过滤掉小图片
*/
private void fiterPicture(List<String> listpath) {
Bitmap bitmap = null;
newfilepath = new ArrayList<String>();
for (String path : listpath) {
if (getBitmap(path) != null) {
bitmap = getBitmap(path);
if (bitmap.getWidth() > 10 && bitmap.getHeight() > 10) {
newfilepath.add(path);
}
}
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
}
picfilepath = newfilepath;
}
/**
*
* @param path
* @return
*/
private InputStream getInputStream(String path) {
InputStream buf = null;
try {
buf = new FileInputStream(path);
} catch (Exception e) {
e.printStackTrace();
}
return buf;
}
/**
* 发送图片信息
*
* @param inputStream
*/
protected void sendPicture(final InputStream inputStream) {
// TODO Auto-generated method stub
try {
Socket socket = new Socket("192.168.1.234", 5554);
OutputStream out = socket.getOutputStream();
out.write(StreamToByte.getBytes(inputStream));
out.flush();
out.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 长按事件
*/
private void setLongClick() {
listview_1.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_1.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
listview_2.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_2.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
listview_3.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_3.get(position);
if (getInputStream(filepath) != null) {
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
sendPicture(getInputStream(filepath));
}
}.start();
Toast.makeText(MainActivity.this, "已向服务端发送查看显示请求!", 0)
.show();
}
return true;
}
});
}
/**
* @param path
* @return
*/
private Bitmap getBitmap(String path) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeFile(path);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
/**
* 单击事件
*/
private void setClick() {
// TODO Auto-generated method stub
listview_1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_1.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
// gallery=(Gallery)view1.findViewById(R.id.gallery);
// galleryadapter=new GalleryAdapter(context, filepath_1);
// gallery.setAdapter(galleryadapter);
// gallery.setSelection(position);
// galleryadapter.setSelected(position);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
listview_2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_2.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
listview_3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
final String filepath = filepath_3.get(position);
View view1 = View.inflate(MainActivity.this,
R.layout.dialogshow, null);
ImageView item_image = (ImageView) view1
.findViewById(R.id.item_image);
if (getBitmap(filepath) != null) {
item_image.setImageBitmap(getBitmap(filepath));
}
dialog = new AlertDialog.Builder(MainActivity.this).setView(
view1).create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
lp.dimAmount = 0.5f;
lp.width = 100;
lp.height = 100;
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mediaplay!=null)
{
mediaplay.stop();
mediaplay = null;
}
threadrun = false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.i("Main", "sssssssssssss");
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return guesturede.onTouchEvent(event);
}
}
相关文章推荐
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- android Gmail查看图片时选择经信息(彩信)分享,手机报错或手机报错后又回到查看图片界面
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)
- Android部分手机拍照后获取的图片被旋转问题的解决方法
- Android 获取手机图片
- Android图片查看支持双击放大缩小、多点触摸
- Android内嵌H5页面调用手机图片操作
- Android查看手机内部储存目录及数据库文件
- android 相机使用(拍照、录像、图片查看、静态人脸识别、延时拍照)
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- 用ADT的FileExplorer查看android手机中的数据库
- Android 实现图片的自动缩放,适应分辨率不同的手机
- android网络图片查看器
- android如何查看手机中的db文件,查看sqlite数据库的表结构
- Android 利用JS 实现对网络图片添加点击事件 查看大图
- Android手机硬件信息的查看和软件安装方式
- Android实验八之图片查看器
- Android开发之选取手机图片