zoukankan      html  css  js  c++  java
  • android Fragment和FragmentActivity

    MainActivity.java




    import android.app.AlertDialog; import android.app.Notification; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import com.baidu.android.pushservice.CustomPushNotificationBuilder; import com.baidu.android.pushservice.PushConstants; import com.baidu.android.pushservice.PushManager; import com.example.newpingziyi.push.Utils; import com.example.newpingziyi.stir.WebViews; import com.example.newpingziyi.system.SettingActivity; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; public class MainActivity extends FragmentActivity { private ViewPager mPager; private TextView tv_find; private TextView tv_my_file; private TextView mainhead; private SlidingMenu slidingMenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Utils.logStringCache = Utils.getLogText(getApplicationContext()); Resources resource = this.getResources(); String pkgName = this.getPackageName(); // PushManager.startWork(getApplicationContext(), // PushConstants.LOGIN_TYPE_API_KEY, // Utils.getMetaValue(MainActivity.this, "api_key")); findView(); init(); if (!Utils.hasBind(getApplicationContext())) { PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, Utils.getMetaValue(MainActivity.this, "api_key")); // Push: 如果想基于地理位置推送,可以打开支持地理位置的推送的开关 PushManager.enableLbs(getApplicationContext()); } CustomPushNotificationBuilder cBuilder = new CustomPushNotificationBuilder( getApplicationContext(), resource.getIdentifier( "notification_custom_builder", "layout", pkgName), resource.getIdentifier("notification_icon", "id", pkgName), resource.getIdentifier("notification_title", "id", pkgName), resource.getIdentifier("notification_text", "id", pkgName)); cBuilder.setNotificationFlags(Notification.FLAG_AUTO_CANCEL); cBuilder.setNotificationDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); cBuilder.setStatusbarIcon(this.getApplicationInfo().icon); cBuilder.setLayoutDrawable(resource.getIdentifier("logo_notification", "drawable", pkgName)); PushManager.setNotificationBuilder(this, 1, cBuilder); } private void findView() { mPager = (ViewPager) findViewById(R.id.vPager); tv_find = (TextView) findViewById(R.id.tv_find); tv_my_file = (TextView) findViewById(R.id.tv_my_file); mainhead = (TextView) findViewById(R.id.main_head); tv_find.setOnClickListener(new MyOnClickListener(0)); tv_my_file.setOnClickListener(new MyOnClickListener(1)); mainhead.setOnClickListener(new View.OnClickListener() { int version = Integer.valueOf(android.os.Build.VERSION.SDK); @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, WebViews.class); startActivity(intent); if (version >= 5) { MainActivity.this.overridePendingTransition( R.anim.push_left_in, R.anim.push_left_out); } } }); } private void init() { mPager.setAdapter(new ContentPagerAdapter(getSupportFragmentManager())); mPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { setCurrentPage(position); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // ignore } public void onPageScrollStateChanged(int state) { // ignore } }); slidingMenu = new SlidingMenu(MainActivity.this); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); slidingMenu.setShadowDrawable(R.drawable.shadow_right); slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay() .getWidth() / 40); // slidingMenu.setShadowWidth(20); // slidingMenu.setBehindOffset(40); slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay() .getWidth() / 5); slidingMenu.setMode(SlidingMenu.LEFT); slidingMenu.setFadeEnabled(true); slidingMenu.setFadeDegree(0.4f); slidingMenu.setBehindScrollScale(0); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); slidingMenu.setSlidingEnabled(true); slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); slidingMenu.setMenu(R.layout.menu_frame); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction().replace(R.id.menu_frame, new SettingActivity()) .commit(); } @Override public void onBackPressed() { if (slidingMenu != null && slidingMenu.isMenuShowing()) { slidingMenu.showContent(); } else { super.onBackPressed(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { slidingMenu.toggle(); return true; } else if (keyCode == KeyEvent.KEYCODE_BACK) { AlertDialog isExit = new AlertDialog.Builder(this).create(); isExit.setTitle("系统提示"); isExit.setMessage("确定要退出吗"); isExit.setButton("确定", listener); isExit.setButton2("取消", listener); isExit.show(); } return super.onKeyDown(keyCode, event); } DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case AlertDialog.BUTTON_POSITIVE: Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); System.exit(0); break; case AlertDialog.BUTTON_NEGATIVE: break; default: break; } } }; private void setCurrentPage(int current) { if (current == 0) { tv_find.setTextColor(getResources().getColor(R.color.green)); tv_my_file.setTextColor(getResources().getColor(R.color.grey)); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); } else { tv_my_file.setTextColor(getResources().getColor(R.color.green)); tv_find.setTextColor(getResources().getColor(R.color.grey)); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); } } private class MyOnClickListener implements OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } public void onClick(View v) { mPager.setCurrentItem(index); } } @Override public void onStart() { super.onStart(); } @Override public void onResume() { super.onResume(); } @Override public void onStop() { super.onStop(); } @Override public void onDestroy() { Utils.setLogText(getApplicationContext(), Utils.logStringCache); super.onDestroy(); } }

      MenuItem.java

    主页面的一些菜单

    public class MenuItem {
    	public int menuIconRes;
    	public String menuTitle;
    	public String menuMsg;
    
    	public MenuItem(int menuIconRes, String menuTitle, String menuMsg) {
    		this.menuIconRes = menuIconRes;
    		this.menuTitle = menuTitle;
    		this.menuMsg = menuMsg;
    	}
    

      MenuItemAdapter.java

    菜单的适配器

    public class MenuItemAdapter extends BaseAdapter {
    
    	private List<MenuItem> menus;
    	private LayoutInflater inflater;
    	private int margin;
    
    	public MenuItemAdapter(Context context, List<MenuItem> menus, int margin) {
    		inflater = LayoutInflater.from(context);
    		this.menus = menus;
    		this.margin = margin;
    	}
    
    	@Override
    	public int getCount() {
    		return menus.size();
    	}
    
    	@Override
    	public Object getItem(int position) {
    		return menus.get(position);
    	}
    
    	@Override
    	public long getItemId(int position) {
    		return position;
    	}
    
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		int height = parent.getHeight() / 3 - margin;
    		AbsListView.LayoutParams param = new AbsListView.LayoutParams(
    				LayoutParams.MATCH_PARENT, height);
    		ViewHolder holder = null;
    		if (convertView == null) {
    			convertView = inflater.inflate(R.layout.menu_item, parent, false);
    			holder = new ViewHolder();
    			holder.iv_menuIcon = (ImageView) convertView
    					.findViewById(R.id.iv_menu_icon);
    			holder.tv_menuTitle = (TextView) convertView
    					.findViewById(R.id.tv_menu_title);
    			holder.tv_menuMsg = (TextView) convertView
    					.findViewById(R.id.tv_menu_msg);
    			convertView.setTag(holder);
    		} else {
    			holder = (ViewHolder) convertView.getTag();
    		}
    		MenuItem item = menus.get(position);
    		holder.iv_menuIcon.setImageResource(item.menuIconRes);
    		holder.tv_menuTitle.setText(item.menuTitle);
    		if (item.menuMsg.length() == 0) {
    			holder.tv_menuMsg.setVisibility(View.GONE);
    		} else {
    			holder.tv_menuMsg.setVisibility(View.VISIBLE);
    			holder.tv_menuMsg.setText(item.menuMsg);
    		}
    		convertView.setLayoutParams(param);
    		return convertView;
    	}
    
    	private class ViewHolder {
    		ImageView iv_menuIcon;
    		TextView tv_menuTitle;
    		TextView tv_menuMsg;
    	}
    
    }
    

      FindFragment.java

    主页面Fragment

    public class FindFragment extends Fragment implements OnItemClickListener {
    	private static final String SAVED_IMAGE_DIR_PATH = "photo_path";
    	private static final int SELECT_PIC_BY_TACK_PHOTO = 1;
    	private static final int SELECT_PIC_BY_PICK_PHOTO = 2;
    	private static final String TAG = "FindFragment";
    	private SharedPreferences preferences;
    	private GridView gv_menu;
    	private String picPath;
    	private Uri photoUri;
    	private String user;
    	private FindFragment mFragment;
    
    	@Override
    	public void onResume() {
    		super.onResume();
    	}
    
    	@Override
    	public void onPause() {
    		super.onPause();
    	}
    
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		View view = inflater.inflate(R.layout.fragment_find, container, false);
    		findView(view);
    		init();
    		return view;
    	}
    
    	private void findView(View v) {
    		gv_menu = (GridView) v.findViewById(R.id.gv_menu);
    		gv_menu.setOnItemClickListener(this);
    		preferences = getActivity().getSharedPreferences("UserInfo",
    				getActivity().MODE_PRIVATE);
    		user = preferences.getString("NAME", user);
    	}
    
    	private void init() {
    		List<MenuItem> menus = new ArrayList<MenuItem>();
    		menus.add(new MenuItem(R.drawable.msg, "消息", "最新情报"));
    		menus.add(new MenuItem(R.drawable.servicer, "服务", "服务与产品"));
    		menus.add(new MenuItem(R.drawable.take_photo, "拍照上传", ""));
    		menus.add(new MenuItem(R.drawable.pick_photo, "相册上传", ""));
    		menus.add(new MenuItem(R.drawable.share, "分享", "推荐给朋友"));
    		menus.add(new MenuItem(R.drawable.teapot, "泡茶", "即将开启你的私人助手"));
    
    		int margin = (int) (getResources().getDisplayMetrics().density * 14 * 13 / 9);
    		MenuItemAdapter adapter = new MenuItemAdapter(getActivity(), menus,
    				margin);
    		gv_menu.setAdapter(adapter);
    	}
    
    	private int[] menu = { R.drawable.msg, R.drawable.servicer,
    			R.drawable.take_photo, R.drawable.pick_photo, R.drawable.share,
    			R.drawable.teapot };
    
    	@Override
    	public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    		switch (menu[position]) {
    		case R.drawable.msg:
    			Intent msg = new Intent(getActivity(), StirActivity.class);
    			startActivity(msg);
    			translate();
    			break;
    
    		case R.drawable.servicer:
    			Intent mWeb = new Intent(getActivity(), WebService.class);
    			startActivity(mWeb);
    			translate();
    			break;
    		case R.drawable.teapot:
    			// Intent set = new Intent(getActivity(), SettingActivity.class);
    			// startActivity(set);
    			Toast.makeText(getActivity(), R.string.pending, 1).show();
    			break;
    		case R.drawable.take_photo:
    			if (user != null) {
    				takePhoto();
    				translate();
    			} else {
    				login();
    			}
    			break;
    		case R.drawable.pick_photo:
    			if (user != null) {
    				pickPhoto();
    				translate();
    			} else {
    				login();
    			}
    			break;
    		case R.drawable.share:
    			Intent share = new Intent(Intent.ACTION_SEND);
    			share.setType("text/plain");
    			share.putExtra(Intent.EXTRA_SUBJECT, R.string.main_share);
    			share.putExtra(Intent.EXTRA_TEXT, R.string.main_share_content);
    			startActivity(share.createChooser(share, getActivity().getTitle()));
    			break;
    		}
    	}
    
    	// takePhoto
    	private void takePhoto() {
    		String SDState = Environment.getExternalStorageState();
    		if (SDState.equals(Environment.MEDIA_MOUNTED)) {
    
    			Intent intent = new Intent(
    					android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    			intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    			ContentValues values = new ContentValues();
    			photoUri = getActivity().getContentResolver().insert(
    					MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    			intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri);
    			startActivityForResult(intent, SELECT_PIC_BY_TACK_PHOTO);
    			if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    				Toast.makeText(getActivity(), R.string.take_photo_rem, 1)
    						.show();
    			}
    		} else {
    			Toast.makeText(getActivity(), R.string.takePhoto_msg, 1).show();
    		}
    	}
    
    	// pickPhoto
    	private void pickPhoto() {
    		Intent intent = new Intent();
    		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		intent.setType("image/*");
    		intent.setAction(Intent.ACTION_GET_CONTENT);
    		startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
    	}
    
    	public void onActivityResult(int requestCode, int resultCode, Intent data) {
    		if (resultCode == Activity.RESULT_OK) {
    			switch (requestCode) {
    			case SELECT_PIC_BY_PICK_PHOTO:
    				if (data != null) {
    					photoUri = data.getData();
    					String[] pojo = { MediaStore.Images.Media.DATA };
    					Cursor cursor = getActivity().getContentResolver().query(
    							photoUri, pojo, null, null, null);
    					if (cursor != null) {
    						int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
    						cursor.moveToLast();
    						picPath = cursor.getString(columnIndex);
    						try {
    							if (Integer.parseInt(Build.VERSION.SDK) < 14) {
    								cursor.close();
    							}
    						} catch (Exception e) {
    							Log.e(TAG, "error:" + e);
    						}
    					}
    				} else {
    					Toast.makeText(getActivity(), R.string.photo_err, 1).show();
    					return;
    				}
    				break;
    			case SELECT_PIC_BY_TACK_PHOTO:
    				if (photoUri != null) {
    					String[] pojo = { MediaStore.Images.Media.DATA };
    					Cursor cursor = getActivity().getContentResolver().query(
    							photoUri, pojo, null, null, null);
    					if (cursor != null) {
    						int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
    						cursor.moveToLast();
    						picPath = cursor.getString(columnIndex);
    						try {
    							if (Integer.parseInt(Build.VERSION.SDK) < 14) {
    								cursor.close();
    							}
    						} catch (Exception e) {
    							Log.e(TAG, "error:" + e);
    						}
    					}
    				} else {
    					Toast.makeText(getActivity(), R.string.tackphoto_err, 1)
    							.show();
    					return;
    				}
    
    				break;
    			default:
    				break;
    			}
    			if (picPath != null) {
    				Intent startEx = new Intent(getActivity(), PhotoPre.class);
    				startEx.putExtra(SAVED_IMAGE_DIR_PATH, picPath);
    				startActivity(startEx);
    			} else {
    				Toast.makeText(getActivity(), R.string.photo_err, 1).show();
    			}
    		}
    		super.onActivityResult(requestCode, resultCode, data);
    	}
    
    	private void translate() {
    		int version = Integer.valueOf(android.os.Build.VERSION.SDK);
    		if (version >= 5) {
    			getActivity().overridePendingTransition(R.anim.push_left_in,
    					R.anim.push_left_out);
    		}
    	}
    
    	private void login() {
    		Toast toast = Toast.makeText(getActivity(), R.string.on_login, 1);
    		toast.setGravity(Gravity.CENTER, 0, 0);
    		toast.show();
    		new Handler().postDelayed(new Runnable() {
    			public void run() {
    				Intent login = new Intent(getActivity(), Login.class);
    				startActivity(login);
    				translate();
    			}
    		}, 1500);
    	}
    

      CheckSdcard.java

    次页面:

    public class CheckSdcard extends Fragment implements OnItemClickListener,
    		OnItemLongClickListener {
    	private ListView sdcardImages;
    	private ImageButton img_btn;
    	private ImageAdapter imageAdapter;
    	private Display display;
    	private ArrayList<LoadedImage> mPhotos = new ArrayList<LoadedImage>();
    	private String ftpPath = "/";
    	private String user;
    	private String localPath = Environment.getExternalStorageDirectory()
    			+ "/pingziyi";
    	private TextView mTextView;
    	
    
    	private PopupWindow popupWindow = null;
    	private int screenWidth = 0;
    	private int screenHeight = 0;
    	private int popupWindowWidth = 0;
    	private int popupWindowHeight = 0;
    	private TextView layout_check;
    	private TextView layout_delete;
    	private View convertview;
    	private boolean running;
    	private ProgressWheel pw_two;;
    
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		View view = inflater.inflate(R.layout.share_photo, container, false);
    		connect();
    		setupViews(view);
    		if (connect() == true) {
    			if (checkFile() == true) {
    				loadImages();
    			}
    		}
    		return view;
    	}
    
    	public boolean checkFile() {
    		File file = new File(localPath + "/");
    		File[] f = file.listFiles();
    		if (f != null && f.length > 0) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	public void onDestroy() {
    		super.onDestroy();
    	}
    
    	private boolean connect() {
    		new Thread(new Runnable() {
    			ContinueFTP ftp = new PhotoPre.ContinueFTP();
    
    			public void run() {
    				Looper.prepare();
    				ftp = new PhotoPre.ContinueFTP();
    				try {
    					ftp.connect("125.88.22.1x7", 21, "xxxx", "&xxxx,");
    					List<String> path = new ArrayList<String>();
    					path = ftp.getListFiles(ftpPath);
    					boolean sdCardExist = Environment.getExternalStorageState()
    							.equals(android.os.Environment.MEDIA_MOUNTED);
    					if (!sdCardExist) {
    						Toast.makeText(getActivity(), R.string.insert_sdcard,
    								Toast.LENGTH_SHORT).show();
    					} else {
    						File dir = new File(localPath + "/");
    						if (!dir.exists()) {
    							dir.mkdir();
    						}
    					}
    					for (String str : path) {
    						String filename = str;
    						String result = filename.substring(
    								filename.indexOf("_") + 1,
    								filename.indexOf("."));
    						SharedPreferences sp = getActivity()
    								.getSharedPreferences("UserInfo",
    										getActivity().MODE_PRIVATE);
    						user = sp.getString("NAME", user);
    						try {
    							Thread.sleep(200);
    						} catch (InterruptedException e) {
    							e.printStackTrace();
    						}
    						if (result.equals(user)) {
    							String remote = ftpPath + str;
    							String remotelocal = localPath + "/" + str;
    
    							ftp.download(remote, remotelocal);
    						}
    					}
    
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}).start();
    		return true;
    	}
    
    	private void setupViews(View view) {
    		sdcardImages = (ListView) view.findViewById(R.id.list_share);
    		img_btn = (ImageButton) view.findViewById(R.id.reflesh);
    		mTextView = (TextView) view.findViewById(R.id.no_pic);
    		pw_two = (ProgressWheel) view.findViewById(R.id.progressbartwo);
    		img_btn.setOnClickListener(new RefreshButton());
    		sdcardImages.setOnItemClickListener(this);
    		sdcardImages.setOnCreateContextMenuListener(new DeleteItem());
    		sdcardImages.setOnItemLongClickListener(this);
    		sdcardImages.setClipToPadding(false);
    		imageAdapter = new ImageAdapter(getActivity());
    		sdcardImages.setAdapter(imageAdapter);
    		imageAdapter.notifyDataSetChanged();
    		sdcardImages.setEmptyView(mTextView);
    
    	}
    
    	private class DeleteItem implements OnCreateContextMenuListener {
    
    		@Override
    		public void onCreateContextMenu(ContextMenu menu, View v,
    				ContextMenuInfo menuInfo) {
    			menu.add(0, 0, 0, "查看");
    			menu.add(0, 1, 0, "删除");
    		}
    
    	};
    
    	@SuppressLint("NewApi")
    	public boolean onContextItemSelected(MenuItem item) {
    		AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item
    				.getMenuInfo();
    		int itemId = item.getItemId();
    		int pos = (int) imageAdapter.getItemId(menuInfo.position);
    		String path = imageAdapter.getPhoto().get(pos).getPath();
    		final String filename = imageAdapter.getPhoto().get(pos).getName();
    		System.out.println("filename---------ftp-----" + filename);
    		switch (itemId) {
    		case 0:
    			LayoutInflater inflater = LayoutInflater.from(getActivity());
    			System.out.println("path-------" + path);
    			Bitmap bm = BitmapFactory.decodeFile(path);
    			if (bm != null) {
    				View img = inflater.inflate(R.layout.dialog_view, null);
    				ImageView view = (ImageView) img.findViewById(R.id.imgView);
    				final AlertDialog dialog = new AlertDialog.Builder(
    						getActivity(), R.style.Translucent_NoTitle).create();
    				view.setImageBitmap(bm);
    				dialog.setView(img);
    				dialog.show();
    
    				view.setOnClickListener(new OnClickListener() {
    					@Override
    					public void onClick(View v) {
    						dialog.cancel();
    					}
    				});
    			} else {
    				Toast.makeText(getActivity(), "没有图片可以浏览!", 1).show();
    			}
    			break;
    
    		case 1:
    			mPhotos.remove(pos);
    			imageAdapter.notifyDataSetChanged();
    			sdcardImages.invalidate();
    			File f = new File(path);
    			f.delete();
    			new Thread(new Runnable() {
    				@Override
    				public void run() {
    					Looper.prepare();
    					try {
    						ftp.connect("125.88.22.1x7", 21, "xxxx",
    								"&xxxxx,");
    						ftp.deleteLoadFile("/" + filename);
    						Toast.makeText(getActivity(), "图片删除成功!", 1).show();
    					} catch (IOException e) {
    						Toast.makeText(getActivity(), "图片删除失败!", 1).show();
    						e.printStackTrace();
    					}
    				}
    			}).start();
    			break;
    		}
    
    		return true;
    	}
    
    	public void onContextMenuClosed(Menu menu) {
    
    		super.getActivity().onContextMenuClosed(menu);
    	}
    
    	private void loadImages() {
    		final Object data = getActivity().getLastNonConfigurationInstance();
    		if (data == null) {
    			new LoadImagesFromSDCard().execute();
    			progress();
    		} else {
    			final LoadedImage[] photos = (LoadedImage[]) data;
    			if (photos.length == 0) {
    				new LoadImagesFromSDCard().execute();
    				progress();
    			}
    			for (LoadedImage photo : photos) {
    				addImage(photo);
    			}
    		}
    	}
    
    	private void addImage(LoadedImage... value) {
    		for (LoadedImage image : value) {
    			imageAdapter.addPhoto(image);
    			imageAdapter.notifyDataSetChanged();
    		}
    	}
    
    	class LoadImagesFromSDCard extends AsyncTask<Object, LoadedImage, Object> {
    		@Override
    		protected Object doInBackground(Object... params) {
    
    			Bitmap newBitmap = null;
    			File file = new File(localPath);
    			String[] filepath = file.list();
    			for (String str : filepath) {
    				String filename = str;
    				String imagePath = localPath + "/" + filename;
    				File files = new File(imagePath);
    
    				FileInputStream is = null;
    				BufferedInputStream bis = null;
    
    				BitmapFactory.Options opts = new BitmapFactory.Options();
    
    				if (files.length() < 51200) { // 20-50k
    					opts.inSampleSize = 2;
    				} else if (files.length() < 307200) { // 50-300k
    					opts.inSampleSize = 4;
    				} else if (files.length() < 819200) { // 300-800k
    					opts.inSampleSize = 6;
    				} else if (files.length() < 1048576) { // 800-1024k
    					opts.inSampleSize = 8;
    				} else {
    					opts.inSampleSize = 12;
    				}
    
    				Bitmap bitmap = BitmapFactory.decodeFile(files.getPath(), opts);
    
    				long size = files.length();
    				DecimalFormat df = new DecimalFormat("#.00");
    				String fileSizeString = "";
    				if (size < 1024) {
    					fileSizeString = df.format((double) size) + "B";
    				} else if (size < 1048576) {
    					fileSizeString = df.format((double) size / 1024) + "K";
    				} else if (size < 1073741824) {
    					fileSizeString = df.format((double) size / 1048576) + "M";
    				} else {
    					fileSizeString = df.format((double) size / 1073741824)
    							+ "G";
    				}
    
    				long time = files.lastModified();
    				Calendar cal = Calendar.getInstance();
    				cal.setTimeInMillis(time);
    
    				String date = cal.getTime().toLocaleString();
    				if (bitmap != null) {
    
    					newBitmap = Bitmap.createScaledBitmap(bitmap, 70, 70, true);
    					bitmap.recycle();
    					bitmap = null;
    					if (newBitmap != null) {
    						publishProgress(new LoadedImage(newBitmap, date,
    								fileSizeString, filename, imagePath));
    					}
    				}
    			}
    			return null;
    		}
    
    		@Override
    		public void onProgressUpdate(LoadedImage... value) {
    			addImage(value);
    		}
    
    		@Override
    		protected void onPostExecute(Object result) {
    			pw_two.setVisibility(View.GONE);
    			imageAdapter.notifyDataSetChanged();
    		}
    	}
    
    	class ImageAdapter extends BaseAdapter {
    		private Context mContext;
    
    		public ImageAdapter(Context context) {
    			mContext = context;
    		}
    
    		public void addPhoto(LoadedImage photo) {
    			mPhotos.add(photo);
    			notifyDataSetChanged();
    		}
    
    		public int getCount() {
    			return mPhotos == null ? 0 : mPhotos.size();
    		}
    
    		public Object getItem(int position) {
    			return mPhotos == null ? null : mPhotos.get(position);
    		}
    
    		public ArrayList<LoadedImage> getPhoto() {
    			return mPhotos;
    		}
    
    		public long getItemId(int position) {
    			return position;
    		}
    
    		public View getView(final int position, View convertView,
    				final ViewGroup parent) {
    			ViewHolder viewHolder = null;
    			if (convertView == null) {
    				viewHolder = new ViewHolder();
    				convertView = LayoutInflater.from(mContext).inflate(
    						R.layout.share_content, null);
    				viewHolder.tv_name = (TextView) convertView
    						.findViewById(R.id.photo_name);
    				viewHolder.tv_time = (TextView) convertView
    						.findViewById(R.id.photo_time);
    				viewHolder.tv_size = (TextView) convertView
    						.findViewById(R.id.photo_size);
    				viewHolder.img_icon = (ImageView) convertView
    						.findViewById(R.id.photo);
    				viewHolder.img_btn = (ImageButton) convertView
    						.findViewById(R.id.img_operate);
    				convertView.setTag(viewHolder);
    			} else {
    				viewHolder = (ViewHolder) convertView.getTag();
    			}
    			viewHolder.tv_name.setText(mPhotos.get(position).getName());
    			viewHolder.tv_time.setText(mPhotos.get(position).getFileDateTime());
    			viewHolder.tv_size.setText(mPhotos.get(position).getBitmapSize());
    			viewHolder.img_icon.setImageBitmap(mPhotos.get(position)
    					.getBitmap());
    			viewHolder.img_btn.setOnTouchListener(new OnTouchListener() {
    				@Override
    				public boolean onTouch(View v, MotionEvent event) {
    					if (popupWindow != null) {
    						popupWindow.dismiss();
    					} else {
    						initPopupWindow(v, position);
    					}
    					return true;
    				}
    			});
    			return convertView;
    
    		}
    
    		class ViewHolder {
    			TextView tv_name;
    			TextView tv_time;
    			TextView tv_size;
    			ImageView img_icon;
    			ImageButton img_btn;
    		}
    	}
    
    	private static class LoadedImage {
    		Bitmap mBitmap;
    		String mDate;
    		String mSize;
    		String mFilename;
    		String mPath;
    
    		LoadedImage(Bitmap bitmap, String date, String size, String filename,
    				String path) {
    			mBitmap = bitmap;
    			mDate = date;
    			mSize = size;
    			mFilename = filename;
    			mPath = path;
    		}
    
    		public Bitmap getBitmap() {
    			return mBitmap;
    		}
    
    		public String getName() {
    			return mFilename;
    		}
    
    		public String getBitmapSize() {
    			return mSize;
    		}
    
    		public String getFileDateTime() {
    			return mDate;
    		}
    
    		public String getPath() {
    			return mPath;
    
    		}
    
    	}
    
    	@SuppressLint("NewApi")
    	public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    		LayoutInflater inflater = LayoutInflater.from(getActivity());
    		String path = imageAdapter.getPhoto().get(position).getPath();
    		System.out.println("path-------" + path);
    		Bitmap bm = BitmapFactory.decodeFile(path);
    		if (bm != null) {
    			View img = inflater.inflate(R.layout.dialog_view, null);
    			ImageView view = (ImageView) img.findViewById(R.id.imgView);
    			final AlertDialog dialog = new AlertDialog.Builder(getActivity(),
    					R.style.Translucent_NoTitle).create();
    			view.setImageBitmap(bm);
    			dialog.setView(img);
    			dialog.show();
    
    			view.setOnClickListener(new OnClickListener() {
    				@Override
    				public void onClick(View v) {
    					dialog.cancel();
    				}
    			});
    		} else {
    			Toast.makeText(getActivity(), "没有图片可以浏览!", 1).show();
    		}
    	}
    
    	// 点击刷新
    	class RefreshButton implements OnClickListener {
    
    		public void onClick(View v) {
    			connect();
    			mPhotos.clear();
    			loadImages();
    		}
    
    	}
    
    	@Override
    	public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
    			long arg3) {
    		return false;
    	}
    
    	private void initPopupWindow(View convertView, int position) {
    		final int pos = (int) imageAdapter.getItemId(position);
    		final String path = imageAdapter.getPhoto().get(pos).getPath();
    		final String filename = imageAdapter.getPhoto().get(pos).getName();
    
    		// RelativeLayout pv = (RelativeLayout) LayoutInflater.from(
    		// getActivity()).inflate(R.layout.popupwindow, null);
    
    		// popupWindow = new PopupWindow(getActivity());
    		// popupWindow.setBackgroundDrawable(new BitmapDrawable());
    		// popupWindow.setContentView(pv);
    
    		// popupWindow.setWidth(getActivity().getWindowManager().getDefaultDisplay().getWidth()
    		// / 3);
    		// popupWindow.setHeight(60);
    
    		// popupWindow.setOutsideTouchable(true);
    		// popupWindow.setFocusable(true);
    
    		screenWidth = getActivity().getWindowManager().getDefaultDisplay()
    				.getWidth();
    		screenHeight = getActivity().getWindowManager().getDefaultDisplay()
    				.getHeight();
    		View popupWindow_view = getActivity().getLayoutInflater().inflate(
    				R.layout.popupwindow, null, false);
    		popupWindow = new PopupWindow(popupWindow_view, screenWidth - 40,
    				screenHeight / 3 - 20, true);
    		popupWindow.setBackgroundDrawable(new BitmapDrawable());
    		popupWindow.setContentView(popupWindow_view);
    		popupWindow.setFocusable(true);
    		popupWindow.setOutsideTouchable(true);
    		// popupWindow.showAsDropDown(convertView);
    		popupWindow
    				.showAtLocation(convertView, Gravity.LEFT | Gravity.TOP,
    						getActivity().getWindowManager().getDefaultDisplay()
    								.getWidth() / 4,
    						getStateBar() + convertView.getHeight()
    								* (position + 1));
    		layout_check = (TextView) popupWindow_view.findViewById(R.id.check);
    		layout_delete = (TextView) popupWindow_view.findViewById(R.id.delete);
    		layout_check.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				LayoutInflater inflater = LayoutInflater.from(getActivity());
    				System.out.println("path-------" + path);
    				Bitmap bm = BitmapFactory.decodeFile(path);
    				if (bm != null) {
    					View img = inflater.inflate(R.layout.dialog_view, null);
    					ImageView view = (ImageView) img.findViewById(R.id.imgView);
    					final AlertDialog dialog = new AlertDialog.Builder(
    							getActivity(), R.style.Translucent_NoTitle)
    							.create();
    					view.setImageBitmap(bm);
    					dialog.setView(img);
    					dialog.show();
    					view.setOnClickListener(new OnClickListener() {
    						@Override
    						public void onClick(View v) {
    							dialog.cancel();
    						}
    					});
    				} else {
    					Toast.makeText(getActivity(), "没有图片可以浏览!", 1).show();
    				}
    			}
    		});
    		layout_delete.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				mPhotos.remove(pos);
    				imageAdapter.notifyDataSetChanged();
    				sdcardImages.invalidate();
    				File f = new File(path);
    				f.delete();
    				new Thread(new Runnable() {
    					@Override
    					public void run() {
    						Looper.prepare();
    						try {
    							ftp.connect("125.88.22.147", 21, "tea_system",
    									"&UJM8ik,");
    							ftp.deleteLoadFile("/" + filename);
    							Toast.makeText(getActivity(), "图片删除成功!", 1).show();
    						} catch (IOException e) {
    							Toast.makeText(getActivity(), "图片删除失败!", 1).show();
    							e.printStackTrace();
    						}
    					}
    				}).start();
    			}
    		});
    
    		popupWindowHeight = popupWindow.getHeight();
    		popupWindowWidth = popupWindow.getWidth();
    	}
    
    	
    	
    }
    

      ContentPagerAdapter.java

    Fragment适配器

    public class ContentPagerAdapter extends FragmentPagerAdapter {
    
    	private Fragment[] fragments;
    
    	public ContentPagerAdapter(FragmentManager fm) {
    		super(fm);
    		fragments = new Fragment[2];
    		fragments[0] = new FindFragment();
    		fragments[1] = new CheckSdcard();
    	}
    
    	@Override
    	public Fragment getItem(int position) {
    		return fragments[position];
    	}
    
    	@Override
    	public int getCount() {
    		return fragments.length;
    	}
    }
    

      

  • 相关阅读:
    设计与声明
    字符串匹配算法——KMP、BM、Sunday
    红黑树——原理
    Linux命令——监视相关
    资源管理
    排序算法——QuickSort、MergeSort、HeapSort(C++实现)
    智能指针——使用与实现
    进程间通信——实现
    构造/析构/赋值运算
    物理内存管理
  • 原文地址:https://www.cnblogs.com/tefcricul/p/3486936.html
Copyright © 2011-2022 走看看