我的界面 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:id="@+id/my_head"android:layout_width="match_parent"android:layout_height="170dp"android:background="@drawable/loginbefore"><com.facebook.drawee.view.SimpleDraweeViewandroid:id="@+id/my_icon"android:layout_width="70dp"android:layout_height="70dp"android:layout_alignParentStart="true"android:layout_centerVertical="true"android:layout_marginStart="21dp"app:placeholderImage="@drawable/loginbefore"app:roundAsCircle="true" /><TextViewandroid:id="@+id/my_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_centerVertical="true"android:layout_marginStart="104dp"android:text="登录/注册>"android:textColor="@color/white" /></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/my_order"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="我的订单" /></LinearLayout>
</LinearLayout>

我的界面 代码

public class MyFragment extends Fragment {@BindView(R.id.my_icon)SimpleDraweeView myIcon;@BindView(R.id.my_name)TextView myName;@BindView(R.id.my_head)RelativeLayout myHead;Unbinder unbinder;@BindView(R.id.my_order)Button myOrder;private SharedPreferences preferences;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = View.inflate(getActivity(), R.layout.my_fg, null);unbinder = ButterKnife.bind(this, view);return view;}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);}private int getIsLogin() {
//        SharedPreferences preferences = getActivity().getSharedPreferences("user", 0);return preferences.getInt("islogin", 0);}@Overridepublic void onDestroyView() {super.onDestroyView();unbinder.unbind();}@Overridepublic void onResume() {super.onResume();preferences = getActivity().getSharedPreferences("user", 0);if (getIsLogin() == 1) {String icon = preferences.getString("icon", "null");String nickname = preferences.getString("nickname", "null");myHead.setBackground(getResources().getDrawable(R.drawable.loginafter));myIcon.setImageURI(Uri.parse(icon));myName.setText(nickname);//*****************************************myHead.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(getActivity(), UserSetActivity.class));}});} else {myHead.setBackground(getResources().getDrawable(R.drawable.loginbefore));//设置本地图片myIcon.setActualImageResource(R.drawable.user);myName.setText("登录/注册>");myHead.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(getActivity(), LoginActivity.class));}});}}@OnClick(R.id.my_order)public void onViewClicked() {startActivity(new Intent(getActivity(), MyOrderActivity.class));}
}

mvp-moedl-RegisterModel

public class RegisterModel {public Observable<Register> Register(String name, String pwd) {return RetrofitUtil.getDefault().create(MyRetrofit.class).getRegister(name, pwd);}
}

mvp-model-LoginModel

public class LoginModel {public Observable<Login> login(String name, String pwd) {return RetrofitUtil.getDefault().create(MyRetrofit.class).getLogin(name, pwd);}
}

mvp-presenter-RegisterPresenter

public class RegisterPresenter extends BasePresenter<RegisterView> {private RegisterModel registerModel;public RegisterPresenter(RegisterView view) {super(view);}@Overridepublic void initModel() {registerModel = new RegisterModel();}public void register(String name, String pwd){registerModel.Register(name,pwd).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Register>() {@Overridepublic void onSubscribe(Disposable d) {compositeDisposable.add(d);}@Overridepublic void onNext(Register register) {view.onRegisterSuccess(register);}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}
}

mvp-model-LoginPresenter

public class LoginPresenter extends BasePresenter<LoginView> {private LoginModel loginModel;public LoginPresenter(LoginView view) {super(view);}@Overridepublic void initModel() {loginModel = new LoginModel();}public void login(String name, String pwd){loginModel.login(name,pwd).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Login>() {@Overridepublic void onSubscribe(Disposable d) {compositeDisposable.add(d);}@Overridepublic void onNext(Login login) {view.onLoginSuccess(login);}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}
}

mvp-model-registerView

public interface RegisterView extends IView {void onRegisterSuccess(Register register);
}

mvp-model-loginView

public interface LoginView extends IView {void onLoginSuccess(Login login);
}

跳转到LoginActivity

public class LoginActivity extends BaseActivity<LoginPresenter> implements LoginView, View.OnClickListener {@BindView(R.id.login_name)EditText loginName;@BindView(R.id.login_pwd)EditText loginPwd;@BindView(R.id.login_login)Button loginLogin;@BindView(R.id.login_reg)TextView loginReg;private String name;private String pwd;@Overridepublic LoginPresenter providePresenter() {return new LoginPresenter(this);}@Overridepublic int provideLayoutId() {return R.layout.activity_login;}@Overridepublic void initListener() {loginLogin.setOnClickListener(this);loginReg.setOnClickListener(this);}@Overridepublic void initDate() {}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.login_login:name = loginName.getText().toString().trim();pwd = loginPwd.getText().toString().trim();presenter.login(name, pwd);break;case R.id.login_reg:startActivity(new Intent(LoginActivity.this,RegisterActivity.class));break;}}@Overridepublic void onLoginSuccess(Login login) {String code = login.getCode();if (code.equals("0")) {Login.DataBean data = login.getData();//登录成功Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();//将是否登录状态值和uid存入sp中SharedPreferences.Editor editor = getSharedPreferences("user", 0).edit();editor.putInt("islogin",1);editor.putString("name",name);editor.putString("pwd",pwd);editor.putInt("uid",data.getUid());editor.putString("icon",data.getIcon());editor.putString("nickname",data.getNickname());editor.commit();finish();} else {Toast.makeText(LoginActivity.this, "用户名或密码错误!", Toast.LENGTH_SHORT).show();}}}

LoginActivity布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".mvp.view.activity.LoginActivity"><EditTextandroid:id="@+id/login_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入手机号" /><EditTextandroid:id="@+id/login_pwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码" /><Buttonandroid:id="@+id/login_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/login_reg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentTop="true"android:text="新用户注册" /></RelativeLayout>
</LinearLayout>

RegisterActivity

public class RegisterActivity extends BaseActivity<RegisterPresenter> implements RegisterView {@BindView(R.id.reg_name)EditText regName;@BindView(R.id.reg_pwd)EditText regPwd;@BindView(R.id.reg_reg)Button regReg;@Overridepublic RegisterPresenter providePresenter() {return new RegisterPresenter(this);}@Overridepublic int provideLayoutId() {return R.layout.activity_register;}@Overridepublic void initListener() {}@Overridepublic void initDate() {openDialog();}@Overridepublic void onRegisterSuccess(Register register) {String code = register.getCode();if (code.equals("0")) {Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(RegisterActivity.this, register.getMsg(), Toast.LENGTH_SHORT).show();}}@OnClick(R.id.reg_reg)public void onViewClicked() {String name = regName.getText().toString().trim();String pwd = regPwd.getText().toString().trim();presenter.register(name, pwd);}private void openDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("注册协议及隐私政策");builder.setMessage("给我同意");builder.setPositiveButton("同意", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});builder.setNegativeButton("不同意", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});AlertDialog alertDialog = builder.create();//设置点击返回按钮不能关闭AlertDialogalertDialog.setCancelable(false);//设置点击alertDialog外部区域不能关闭AlertDialogalertDialog.setCanceledOnTouchOutside(false);alertDialog.show();}
}

RegisterActivity布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".mvp.view.activity.RegisterActivity"><EditTextandroid:id="@+id/reg_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入手机号" /><EditTextandroid:id="@+id/reg_pwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码" /><Buttonandroid:id="@+id/reg_reg"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="注册" />
</LinearLayout>

UserSetActivity布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".mvp.view.activity.UserSetActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_weight="9"android:layout_width="match_parent"android:layout_height="0dp"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/userset_txt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:text="账户设置" /></LinearLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="150dp"><com.facebook.drawee.view.SimpleDraweeViewandroid:id="@+id/userset_icon"android:layout_width="70dp"android:layout_height="70dp"android:layout_alignParentStart="true"android:layout_centerVertical="true"android:layout_marginStart="21dp"app:placeholderImage="@drawable/ic_launcher_background"app:roundAsCircle="true" /><TextViewandroid:id="@+id/userset_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_centerVertical="true"android:layout_marginStart="107dp"android:text="昵称" /></RelativeLayout><TextViewandroid:id="@+id/userset_seticon"android:layout_width="match_parent"android:layout_height="40dp"android:gravity="center_vertical"android:text="头像" /><TextViewandroid:id="@+id/userset_setnick"android:layout_width="match_parent"android:layout_height="40dp"android:gravity="center_vertical"android:text="昵称" /><TextViewandroid:id="@+id/userset_setaddres"android:layout_width="match_parent"android:layout_height="40dp"android:gravity="center_vertical"android:text="地址管理" /></LinearLayout><Buttonandroid:id="@+id/userset_unlogin"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:text="退出登录" /></LinearLayout><Viewandroid:id="@+id/huiview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#60000000"android:visibility="gone" /></FrameLayout>

UserSetActivity

public class UserSetActivity extends AppCompatActivity implements View.OnClickListener {@BindView(R.id.userset_icon)SimpleDraweeView usersetIcon;@BindView(R.id.userset_name)TextView usersetName;@BindView(R.id.userset_seticon)TextView usersetSeticon;@BindView(R.id.userset_setnick)TextView usersetSetnick;@BindView(R.id.userset_setaddres)TextView usersetSetaddres;@BindView(R.id.huiview)View huiview;@BindView(R.id.userset_unlogin)Button usersetUnlogin;private SharedPreferences preferences;private PopupWindow popupWindow;private View view;private File file;private String uid;private AlertDialog alertDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_user_set);ButterKnife.bind(this);//判断sd卡指定的目录是否存在
//        File files = new File(Environment.getExternalStorageDirectory() + "/im g");
//        File files = new File(getFilesDir().getAbsolutePath() + "/img");
//        if (!files.exists()) {
//            files.mkdirs();
//        }file = new File(Environment.getExternalStorageDirectory() + "/1601v.png");initData();//点击监听usersetSeticon.setOnClickListener(this);usersetSetnick.setOnClickListener(this);usersetSetaddres.setOnClickListener(this);usersetUnlogin.setOnClickListener(this);//初始化alertdialoginitDialog();}private void initDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);
//        builder.setTitle("确定退出登录?");builder.setMessage("确定退出登录?");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {SharedPreferences.Editor editor = preferences.edit();editor.clear();editor.commit();finish();}});builder.setNegativeButton("取消", null);alertDialog = builder.create();}private void initData() {preferences = getSharedPreferences("user", 0);String icon = preferences.getString("icon", "");
//        String nickname = preferences.getString("nickname", "");//设置数据usersetIcon.setImageURI(Uri.parse(icon));
//        usersetName.setText(nickname);//初始化头像popupwindowinitPop();}private void initPop() {view = View.inflate(this, R.layout.activity_user_set, null);View popView = View.inflate(this, R.layout.icon_pop, null);popupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);//设置透明背景popupWindow.setBackgroundDrawable(new ColorDrawable(0));//设置pop外部可触摸popupWindow.setOutsideTouchable(true);//设置焦点事件popupWindow.setFocusable(true);//设置内部可触摸popupWindow.setTouchable(true);
//        popwindow消失监听,将huiview隐藏popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {huiview.setVisibility(View.GONE);}});//拍照popView.findViewById(R.id.icon_capture).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {popupWindow.dismiss();
//                Toast.makeText(UserSetActivity.this, "点点点", Toast.LENGTH_SHORT).show();//调用系统相机//打开相机 MediaStore.ACTION_IMAGE_CAPTURE 打开相机的ActionIntent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//在Sdcard 中创建文件 存入图片it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//1.意图   2.requestCode 请求码startActivityForResult(it, 1000);}});//选取相册popView.findViewById(R.id.icon_photos).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {popupWindow.dismiss();Toast.makeText(UserSetActivity.this, "点点点1", Toast.LENGTH_SHORT).show();}});//取消popView.findViewById(R.id.icon_cancel).setOnClickListener(new View.OnClickListener() {@Override       public void onClick(View v) {popupWindow.dismiss();}});}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.userset_seticon://显示popupwindow的位置popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
//                //弹出后将view显示出来huiview.setVisibility(View.VISIBLE);break;case R.id.userset_setnick://修改昵称startActivity(new Intent(UserSetActivity.this, NcSetActivity.class));break;case R.id.userset_setaddres:break;case R.id.userset_unlogin://注销alertDialog.show();break;}}@Overrideprotected void onResume() {super.onResume();String nickname = preferences.getString("nickname", "");usersetName.setText(nickname);}//拍照完成后回调@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1000 && resultCode == RESULT_OK) {//调取裁剪功能  om.android.camera.action.CROP 裁剪的ActionIntent it = new Intent("com.android.camera.action.CROP");//得到图片设置类型it.setDataAndType(Uri.fromFile(file), "image/*");//是否支持裁剪 设置 true 支持  false 不支持it.putExtra("CROP", true);//设置比例大小  1:1it.putExtra("aspectX", 1);it.putExtra("aspectY", 1);//输出的大小it.putExtra("outputX", 250);it.putExtra("outputY", 250);//将裁剪好的图片进行返回到Intent中it.putExtra("return-data", true);startActivityForResult(it, 2000);}//点击完裁剪的完成以后会执行的方法if (requestCode == 2000 && resultCode == RESULT_OK) {Bitmap bitmap = data.getParcelableExtra("data");usersetIcon.setImageBitmap(bitmap);//裁剪完成开始上传到服务器upLoadIcon();}}//上传头像private void upLoadIcon() {uid = preferences.getInt("uid", 0) + "";final RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);RetrofitUtil.getDefault().create(MyRetrofit.class).upLoadIcon(uid, part).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<UpLoadIcon>() {@Overridepublic void onSubscribe(Disposable d) {}@Overridepublic void onNext(UpLoadIcon upLoadIcon) {String code = upLoadIcon.getCode();if (code.equals("0")) {Toast.makeText(UserSetActivity.this, "头像上传成功", Toast.LENGTH_SHORT).show();//上传成功后,获得上传图片的url,存入spsaveSp();} else {Toast.makeText(UserSetActivity.this, "头像上传失败", Toast.LENGTH_SHORT).show();}}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}private void saveSp() {//从sp中取出手机号,密码,登录,获得iconurlString name = preferences.getString("name", "");String pwd = preferences.getString("pwd", "");final SharedPreferences.Editor editor = preferences.edit();new LoginModel().login(name, pwd).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Login>() {@Overridepublic void accept(Login login) throws Exception {Login.DataBean data = login.getData();String icon = data.getIcon();editor.putString("icon", icon);editor.commit();}});}}

PopWindow布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFF"android:orientation="vertical"><TextViewandroid:id="@+id/icon_capture"android:layout_width="match_parent"android:gravity="center"android:layout_height="40dp"android:text="拍照上传" /><TextViewandroid:gravity="center"android:id="@+id/icon_photos"android:layout_width="match_parent"android:layout_height="40dp"android:text="相册上传" /><TextViewandroid:layout_marginTop="15dp"android:gravity="center"android:id="@+id/icon_cancel"android:layout_width="match_parent"android:layout_height="40dp"android:text="取消" />
</LinearLayout>

NcActivity(修改昵称)

public class NcSetActivity extends AppCompatActivity {@BindView(R.id.ncset_txt)EditText ncsetTxt;@BindView(R.id.ncset_update)Button ncsetUpdate;private SharedPreferences preferences;private String nc;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_nc_set);ButterKnife.bind(this);preferences = getSharedPreferences("user", 0);String nickname = preferences.getString("nickname", "");ncsetTxt.setText(nickname);}@OnClick(R.id.ncset_update)public void onViewClicked() {nc = ncsetTxt.getText().toString().trim();String uid = getSharedPreferences("user", 0).getInt("uid", 0)+"";RetrofitUtil.getDefault().create(MyRetrofit.class).getUpDateNc(uid, nc).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<UpDateNc>() {@Overridepublic void onSubscribe(Disposable d) {}@Overridepublic void onNext(UpDateNc upDateNc) {String code = upDateNc.getCode();if (code.equals("0")){Toast.makeText(NcSetActivity.this,"昵称修改成功",Toast.LENGTH_SHORT).show();//将sp中的昵称也修改了SharedPreferences.Editor editor = preferences.edit();editor.putString("nickname",nc);editor.commit();finish();}else{Toast.makeText(NcSetActivity.this,"昵称修改失败",Toast.LENGTH_SHORT).show();}}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}
}

NcActivity布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".mvp.view.activity.NcSetActivity"><TextViewandroid:gravity="center_horizontal"android:text="修改昵称"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/ncset_txt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="8" /><Buttonandroid:id="@+id/ncset_update"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:text="修改" /></LinearLayout>
</LinearLayout>

仿京东——我的界面(登录注册,上传头像)相关推荐

  1. springboot+Jcrop实现图片裁剪(模仿邮箱注册上传头像)

    1.pom配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  2. vue 移动端头像裁剪_移动端 上传头像 并裁剪功能(h5)

    移动端头像图片上传裁剪 .button { outline: 0; display: inline-block; margin-bottom: 0; font-weight: 400; text-al ...

  3. 微信小程序仿淘票票之登录注册讲解

    微信小程序仿淘票票之登录注册讲解(这也是我学习的第一步嘛) 前言 一.登录以及注册的业务逻辑 二.核心代码 1.register代码 2.login代码 总结 前言 愉快的期末,终于结束了,我准备把程 ...

  4. SpringBoot-项目1-用户(注册,登录,修改密码,修改个人资料,上传头像)

    1. 项目分析 在设计一款软件时,在编写代码之前,应该先分析这个项目中需要处理哪些类型的数据!例如,本项目中需要处理的数据种类有:收藏,购物车,用户,收货地址,订单,商品,商品类别. 当确定了需要处理 ...

  5. c#web窗体登录界面登录注册以及密码找回发送邮箱功能

    c#web窗体登录界面登录注册以及密码找回发送邮箱功能 效果图如下: 1.登录界面aspx代码 <%@ Page Language="C#" AutoEventWireup= ...

  6. 在本地测试无组件上传类上传大文件可以,在服务器上就不行,仿163网盘无刷新文件上传系统...

    回复  引用  查看     2008-10-20 11:03 | fkeuem 真的很不错.谢谢. 回复  引用  查看     2008-10-20 11:20 | PuserChen 下载了,学 ...

  7. [转]仿163网盘无刷新文件上传系统

    原文链接:http://www.cnblogs.com/cloudgamer/archive/2008/10/20/1314766.html 这个仿163网盘无刷新文件上传系统,并没有用使用.net的 ...

  8. 高仿微信上传头像附带压缩,旋转图片,附加demo

    本人初学者,再做项目时要求上传头像要像微信那种,需要外面裁剪框不动,里面图片可以改变大小,android系统裁剪和所要求的完全相反,所以,对于这个问题,困扰了我将近一个月,不断的修改,不断的出现新问题 ...

  9. 关于注册页面上传头像并在后台处理数据

    之前在做注册页面头像上传时,发现直接通过request.getParameter方法获取到的值全是null,后面经过查找资料找出了原因,因为在普通注册页面的基础上加入了上传头像的功能,所以需要在for ...

最新文章

  1. CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)
  2. [USACO18JAN][luoguP4183 ]Cow at Large P
  3. GridView RowCommand事件中取得當前行
  4. Qt之QGraphicsView实战篇(很强大)
  5. 10-5 5-5 查询只卖三种不同型号PC的厂商 (20 分)
  6. leetcode 107 --- 二叉树程序遍历 ii
  7. python入门——数字+字符串
  8. 值对于int32太大或太小_影响涂镀层测厚仪测量值的因素与解决方法
  9. git revert与git reset
  10. Kafka 0.10.1.1 特点
  11. 易筋SpringBoot 2.1 | 第一篇:构建第一个SpringBoot工程
  12. AI人工智能简史-人工智能与炼金术
  13. 水质检测c语言程序,单片机TDS水质检测源程序
  14. 此处纸薄不经墨,待入章中再续貂
  15. 语句摘抄——第29周
  16. 实时数仓实践(一)之数据库实时增量同步工具-CDC(Change Data Capture)
  17. Hypothesis Test Overview
  18. The Untended Antiquity (二维树状数组 哈希)
  19. mac悬浮窗_Mac OS 悬浮窗口,并且可以保持在全屏的其他应用上。
  20. 误差向量幅度(EVM)

热门文章

  1. IDEA maven配置教程
  2. RedHat系列系统 Clickhouse v18 源码编译安装
  3. GitKraken Authentication问题,无法同步代码
  4. CPU上下文切换、进程上下文、中断上下文
  5. oppo计算机夜间颜色,“暗夜精灵”出没,OPPO Reno超级夜景2.0让你成为色彩艺术家!...
  6. java深入微服务原理改造房产销售平台,Java深入微服务原理改造房产销售平台
  7. 80端口被Default Web Site占用,不能为自己的网站添加绑定80端口
  8. OGNL的基本语法与用法
  9. Py打包的天坑!(no moudle named xxxx)
  10. 快速理解Vue父子组件传值