登陆相机

package com.bwie.jd.view.fragment;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

import com.bwie.jd.R;
import com.bwie.jd.model.bean.FenRightBean;
import com.bwie.jd.model.bean.HomeBean;
import com.bwie.jd.presenter.MainPresenter;
import com.bwie.jd.view.IView.IMainView;
import com.bwie.jd.view.activity.LoginActivity;
import com.bwie.jd.view.adapter.TuiAdapter;
import com.facebook.drawee.view.SimpleDraweeView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;

import static android.app.Activity.RESULT_OK;

public class MyFragment extends Fragment implements IMainView {
@BindView(R.id.img)
SimpleDraweeView img;
@BindView(R.id.deng)
TextView deng;
Unbinder unbinder;
@BindView(R.id.rv_product_my)
RecyclerView rec;
private Uri uri;
private PopupWindow window;
private MainPresenter mainPresenter;
private Bitmap head;// 头像Bitmap
private static String path = “/sdcard/myHead/”;// sd路径
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
unbinder = ButterKnife.bind(this, view);
path = Environment.getExternalStorageDirectory() + “/head.jpg”;
mainPresenter = new MainPresenter();
mainPresenter.attachView(this);
mainPresenter.loadDataFromNet();
return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
}


@OnClick({R.id.img, R.id.deng})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.img:
            //得到更换头像的popwindow
            showPopwindow();
            break;
        case R.id.deng:
            Intent intent = new Intent(getActivity(), LoginActivity.class);
            startActivity(intent);

            break;
    }
}

private void showPopwindow() {
    // 利用layoutInflater获得View
    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.linearlayout, null);
    // 下面是两种方法得到宽度和高度 getWindow().getDecorView().getWidth()
    window = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.WRAP_CONTENT);
    // 设置popWindow弹出窗体可点击,这句话必须添加,并且是true
    window.setFocusable(true);

    // 实例化一个ColorDrawable颜色为半透明
    ColorDrawable dw = new ColorDrawable(0xb0000000);
    window.setBackgroundDrawable(dw);

    // 设置popWindow的显示和消失动画
    //window.setAnimationStyle(R.style.mypopwindow_anim_style);
    // 在底部显示
    window.showAtLocation(getActivity().findViewById(R.id.img), Gravity.BOTTOM, 0, 0);
    // 这里检验popWindow里的button是否可以点击
    Button first = view.findViewById(R.id.first);//相机
    Button third = view.findViewById(R.id.third);//取消
    Button second = view.findViewById(R.id.second);//相册
    //相机
    first.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "head.jpg")));
            startActivityForResult(intent, 2);
            window.dismiss();
        }
    });

    //相册
    second.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK, null);
            intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
            startActivityForResult(intent, 1);
            window.dismiss();
        }
    });

    //取消
    third.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "取消", Toast.LENGTH_SHORT).show();
            window.dismiss();
        }
    });
    // popWindow消失监听方法
    window.setOnDismissListener(new PopupWindow.OnDismissListener() {

        @Override
        public void onDismiss() {
            System.out.println("popWindow消失");
        }
    });

}

@Override
public void onSuccess(HomeBean.DataBean data) {
    List<HomeBean.DataBean.TuijianBean.ListBeanX> list1 = data.getTuijian().getList();
    GridLayoutManager manager1 = new GridLayoutManager(getActivity(), 2, GridLayoutManager.VERTICAL, false);
    rec.setLayoutManager(manager1);
    rec.setAdapter(new TuiAdapter(getActivity(), list1));
}

@Override
public void onErr(int errCode, String errMsg) {

}

@Override
public void rightSuccess(List<FenRightBean.DataBean> msg) {

}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK) {
                cropPhoto(data.getData());// 裁剪图片
            }

            break;
        case 2:
            if (resultCode == RESULT_OK) {
                File temp = new File(Environment.getExternalStorageDirectory() + "/head.jpg");
                cropPhoto(Uri.fromFile(temp));// 裁剪图片
            }

            break;
        case 3:
            if (data != null) {
                Bundle extras = data.getExtras();
                head = extras.getParcelable("data");
                if (head != null) {
                    /**
                     * 上传服务器代码
                     */
                    setPicToView(head);// 保存在SD卡中
                    img.setImageBitmap(head);// 用ImageView显示出来
                }
            }
            break;
        default:
            break;

    }
    super.onActivityResult(requestCode, resultCode, data);

//
if (requestCode == 999 && resultCode == 1) {
String mobile = data.getExtras().getString(“mobile”);
deng.setText(mobile);
} else {
if (requestCode == 999 && resultCode == 888) {
String name = data.getExtras().getString(“name”);
String iconurl = data.getExtras().getString(“iconurl”);
deng.setText(name);
Uri parse = Uri.parse(iconurl);
img.setImageURI(parse);
}
}

}

private void cropPhoto(Uri data) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(data, "image/*");
    intent.putExtra("crop", "true");
    // aspectX aspectY 是宽高的比例
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    // outputX outputY 是裁剪图片宽高
    intent.putExtra("outputX", 150);
    intent.putExtra("outputY", 150);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, 3);
}

private void setPicToView(Bitmap mBitmap) {
    String sdStatus = Environment.getExternalStorageState();
    if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
        return;
    }
    FileOutputStream b = null;
    File file = new File(path);
    file.mkdirs();// 创建文件夹
    String fileName = path + "head.jpg";// 图片名字
    try {
        b = new FileOutputStream(fileName);
        mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        try {
            // 关闭流
            b.flush();
            b.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值