更多学习和讨论,欢迎加入我们!
有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
image = BitmapFactory.decodeFile(getExternalCacheDir() + "/"+SelectPicPopupWindowActivity.TAKE_PHOTO_NAME);
if (image != null) {
savePicture(image, adapter.imageView);
}
} catch (Exception e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
/**
* 保存并返回的图片
*
* @param bitmap
* @param imageView
*/
private void savePicture(Bitmap bitmap, ImageView imageView) {
FileOutputStream b = null;
String str = DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";
String name = null;
switch (adapter.clickPosition) {
case 0:
name = "1001_" + str;
break;
case 1:
name = "1002_" + str;
break;
case 2:
name = "1003_" + str;
break;
case 3:
name = "1004_" + str;
break;
case 4:
name = "1005_" + str;
break;
}
String fileName = getCacheDir() + name;
boolean bl = false;
try {
b = new FileOutputStream(fileName);
bl = bitmap.compress(Bitmap.CompressFormat.JPEG, 10, b);// 把数据写入文件
if (bl) {
adapter.addUrl(fileName, adapter.clickPosition);//添加需要上传图片的链接
UtilLog.d("bl:" + bl);
UtilLog.d("fileName:" + fileName);
Glide.with(this)
.load(fileName)
// .placeholder(R.drawable.anim)
// .bitmapTransform(new RoundedCornersTransformation(this, 50, 0, RoundedCornersTransformation.CornerType.ALL))
.crossFade(1000)
.into(imageView);
UtilLog.d("xianshiwangcheng");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
仿ios的选择页面
import java.io.File;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class SelectPicPopupWindowActivity extends Activity implements OnClickListener {
private static final int OPNE_CAMRA=0;
//调用相机拍照,保存照片的名字
public static final String TAKE_PHOTO_NAME = "take_photo.jpg";
private Button btn_take_photo, btn_pick_photo, btn_cancel;
private LinearLayout layout;
private Intent intent;
public static String url;
private int sign=1;//是否弹出横向拍照的提示,0不弹出,1弹出
//下面这句指定调用相机拍照后的照片存储的路径
File tempFile = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_pic_popup_window);
// File dirFile = new File(getExternalCacheDir());
// if (!dirFile.exists()) {
// dirFile.mkdirs();
// }
tempFile = new File(getExternalCacheDir(), TAKE_PHOTO_NAME);
intent = getIntent();
sign=intent.getIntExtra("sign",1);
btn_take_photo = (Button) this.findViewById(R.id.btn_take_photo);//照相
btn_pick_photo = (Button) this.findViewById(R.id.btn_pick_photo);//相册
btn_cancel = (Button) this.findViewById(R.id.btn_cancel);
layout = (LinearLayout) findViewById(R.id.pop_layout);
// 添加选择窗口范围监听可以优先获取触点,即不再执行onTouchEvent()函数,点击其他地方时执行onTouchEvent()函数销毁Activity
layout.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "提示:点击窗口外部关闭窗口!",
Toast.LENGTH_SHORT).show();
}
});
// 添加按钮监听
btn_cancel.setOnClickListener(this);
btn_pick_photo.setOnClickListener(this);
btn_take_photo.setOnClickListener(this);
}
// 实现onTouchEvent触屏函数但点击屏幕时销毁本Activity
@Override
public boolean onTouchEvent(MotionEvent event) {
finish();
return true;
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_take_photo:
try {
if (RenZhengListViewAdapter.isFirstTakePhono&&sign!=0) {
RenZhengListViewAdapter.isFirstTakePhono = false;
UtilDialog.showTakePhotoDialog(this, new DialogButtonClickInterface() {
@Override
public void leftButtonClick(Dialog dialog) {
}
@Override
public void rightButtonClick(Dialog dialog) {
}
@Override
public void singleButtonClick(Dialog dialog) {
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission(SelectPicPopupWindowActivity.this, Manifest.permission.CAMERA);
if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(SelectPicPopupWindowActivity.this,new String[]{Manifest.permission.CAMERA},OPNE_CAMRA);
return;
}else{
openCamra();//调用具体方法
}
} else {
openCamra();//调用具体方法
}
}
});
} else {
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission(SelectPicPopupWindowActivity.this, Manifest.permission.CAMERA);
if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(SelectPicPopupWindowActivity.this,new String[]{Manifest.permission.CAMERA},OPNE_CAMRA);
return;
}else{
openCamra();//调用具体方法
}
} else {
openCamra();//调用具体方法
}
}
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.btn_pick_photo:
try {
//选择照片的时候也一样,我们用Action为Intent.ACTION_GET_CONTENT,
//有些人使用其他的Action但我发现在有些机子中会出问题,所以优先选择这个
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 2);
} catch (ActivityNotFoundException e) {
}
break;
case R.id.btn_cancel:
finish();
break;
default:
break;
}
}
private void openCamra(){
//拍照我们用Action为MediaStore.ACTION_IMAGE_CAPTURE,
//有些人使用其他的Action但我发现在有些机子中会出问题,所以优先选择这个
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
startActivityForResult(intent, 1);
}
学习路线+知识梳理
花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。
这次就分享到这里吧,下篇见。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
tExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
startActivityForResult(intent, 1);
}
学习路线+知识梳理
花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。
这次就分享到这里吧,下篇见。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!