第三节总结

这一章主要实现登陆和注册以及自定义Dialog还有圆形头像的实现

登陆

登陆注册主要依靠Bmob实现:首先创建一个类,添加除了用户名和密码以外的其他属性
public class MyUser extends BmobUser {
   private String desc,sex;
    private  int age;


    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
登陆的实现:
//通过RadioGroup选择性别监听事件的实现方法
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group,  int checkedId) {
                if (checkedId == R.id.boy_radiobutton) {
                    Sex="男";
                }else if (checkedId==R.id.girl_readbutton){
                    Sex="女";
                }
            }
        });
//布局界面
<RadioGroup
        android:id="@+id/mradiogrop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/boy_radiobutton"
            android:text="男"
            android:checked="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <RadioButton
            android:id="@+id/girl_readbutton"
            android:text="女"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RadioGroup>

进行注册:

 //获取EditText中的输入               
                Susername=username.getText().toString();
                Sage= age.getText().toString();
                Spassword=password.getText().toString();
                Spassword2=password2.getText().toString();
                Sdesc=desc.getText().toString();
                Semil=emil.getText().toString();
                //判断是否为空  用TextUtils中的方法
                if (!TextUtils.isEmpty(Susername)&!TextUtils.isEmpty(Sage)&!TextUtils.isEmpty(Spassword)&!TextUtils.isEmpty(Spassword2)
                        &!TextUtils.isEmpty(Semil)){
                     //两次输入密码是否一致
                    if (Spassword.equals(Spassword2)){
                       //简介是否为空   如果为空填入默认值
                        if (TextUtils.isEmpty(Sdesc)){
                            Sdesc=getString(R.string.desc);
                        }
                        //创建对象调用方法
                        MyUser bu = new MyUser();
                        bu.setUsername(Susername);
                        bu.setPassword(Spassword);
                        bu.setEmail(Semil);
                        bu.setAge(Integer.parseInt(Sage));
                        bu.setSex(Sex);
                        bu.setDesc(Sdesc);
                        bu.signUp(new SaveListener<MyUser>() {
                            @Override
                            public void done(MyUser s, BmobException e) {
                                if (e == null) {
                                    Toast.makeText(registerActivity.this,"注册成功",Toast.LENGTH_LONG).show();
                                    finish();
                                } else {
                                    Toast.makeText(registerActivity.this,e.toString(),Toast.LENGTH_LONG).show();
                                }
                            }
                        });
                    }else {
                        Toast.makeText(this,"两次密码请相同",Toast.LENGTH_LONG).show();
                    }
                }else {
                    Toast.makeText(this,"请填写完整",Toast.LENGTH_LONG).show();
                }

登陆的实现:

//获取输入框中的用户名和密码
                Sname=name.getText().toString();
                Spassword=password.getText().toString();
//创建对象调用方法
                final MyUser bu2 = new MyUser();
                bu2.setUsername(Sname);
                bu2.setPassword(Spassword);
                bu2.login(new SaveListener<MyUser>() {

                    public void done(MyUser bmobUser, BmobException e) {
                        dialog.dismiss();
                        if(e==null){
                            //if (bu2.getEmailVerified()){
                                Toast.makeText(Login_activity.this,"登陆成功",Toast.LENGTH_LONG).show();
                            startActivity(new Intent(Login_activity.this, MainActivity.class));

                            finish();
                        }else{
                            Toast.makeText(Login_activity.this,e.toString(),Toast.LENGTH_LONG).show();                        }
                    }
                });

记住密码的实现:

利用SharedPreferences实现,前面已经创建了SharedPreferences的封装类
//重写Activity的生命周期中的方法   
protected void onDestroy() {
        super.onDestroy();
//为SharedPreferences的isChecked节点创建一个默认值false
        share.putBoolean(this,"isChecked",false);
//判断是否选中了记住密码
        if (che_pass.isChecked()==true){
//创建节点输入记录数据
            share.putString(this,"name",Sname);
            share.putString(this,"password",Spassword);
//将isChecked改为true
            share.putBoolean(this,"isChecked",true);
        }

    }
在Oncreat方法中实现(再次带开该页面用到):
//获取节点值
checkd=share.getBoolean(this,"isChecked");
//改变CheckBox的状态
        che_pass.setChecked(checkd);
        if (checkd==true){
            name.setText(share.getString(this,"name"));
            password.setText(share.getString(this,"password"));
        }

自定义Dialog(不是很懂,看了一天也没理解,慢慢消化吧):

public class MyDialog extends Dialog {
    //定义属性
    public MyDialog(Context context,int width,int height,int layout,int style,int gravity,int anim){
        super(context,style);
        //设置属性
        setContentView(layout);
        Window window = getWindow();
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
        layoutParams.gravity = gravity;
        window.setAttributes(layoutParams);
        window.setWindowAnimations(anim);
    }
创建:
dialog = new MyDialog(this, 100, 100, R.layout.dialog_login, R.style.Theme_dialog, Gravity.CENTER, R.style.Dialog_anim);
//不可点击Dialog以外的地方               
 dialog.setCancelable(false);
//显示
                dialog.show();
//隐藏
dialog.dismiss();

圆形头像的实现:


gredle中导入
//CircleImageView
    compile 'de.hdodenhof:circleimageview:2.1.0'
布局文件:
 <de.hdodenhof.circleimageview.CircleImageView
                android:id="@+id/profile_image"
                android:layout_width="96dp"
                android:layout_height="96dp"
                android:src="@drawable/add_pic"
                app:civ_border_color="@color/colorPrimary"
                app:civ_border_width="2dp" />

从相册中选择图片并进行裁剪,用作头像:

跳转进相册
//action与Type属性        
Intent intent=new Intent(ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent,REQUECT_pic);
重写方法:
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
//打开相册的请求码
            case REQUECT_pic:
                //返回一个uri类型的数据 
                startPhotoZoom(data.getData());
                break;
//打开裁剪器的请求码
            case RESULT_REQUEST_CODE:
                if (data != null){
                    setPic(data);
                }
        }



裁剪方法:

 private void startPhotoZoom(Uri data) {

        if (data==null){
            Toast.makeText(getActivity(),"uri==null",Toast.LENGTH_LONG);
            return;
         }
        L.i(data.toString());
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(data,"image/*");
        //设置裁剪
        intent.putExtra("crop", "true");
        //裁剪宽高比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        //裁剪图片的质量
        intent.putExtra("outputX", 320);
        intent.putExtra("outputY", 320);
        //发送数据
        intent.putExtra("return-data", true);
        //启动裁剪器
        startActivityForResult(intent, RESULT_REQUEST_CODE);
        L.i("启动裁剪器");
    }
将裁剪好的图片设置为头像:
private void setPic(Intent data) {
        Bundle bundle = data.getExtras();
        if (bundle != null) {
            Bitmap bitmap = bundle.getParcelable("data");
            profile_image.setImageBitmap(bitmap);
        }
    }

图片保存到SharedPreferences

    //保存图片到shareutils
    public static void putImageToShare(Context mContext, ImageView imageView) {
        BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        //第一步:将Bitmap压缩成字节数组输出流
        ByteArrayOutputStream byStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 80, byStream);
        //第二步:利用Base64将我们的字节数组输出流转换成String
        byte[] byteArray = byStream.toByteArray();
        String imgString = new String(Base64.encodeToString(byteArray, Base64.DEFAULT));
        //第三步:将String保存shareUtils
        ShareUtils.putString(mContext, "image_title", imgString);
    }

    //读取图片
    public static void getImageToShare(Context mContext, ImageView imageView) {
        //1.拿到string
        String imgString = ShareUtils.getString(mContext, "image_title", "");
        if (!imgString.equals("")) {
            //2.利用Base64将我们string转换
            byte[] byteArray = Base64.decode(imgString, Base64.DEFAULT);
            ByteArrayInputStream byStream = new ByteArrayInputStream(byteArray);
            //3.生成bitmap
            Bitmap bitmap = BitmapFactory.decodeStream(byStream);
            imageView.setImageBitmap(bitmap);
        }
    }













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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值