动画加登录

编辑小球
public class CreatView extends View {

    private Paint mpaint;

    public CreatView(Context context) {
        super(context);
        init(context);
    }

    public CreatView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    private void init(Context context) {
        mpaint = new Paint();
        //给小球设置颜色
        mpaint.setColor(Color.RED);
        //给小球设置抗锯齿
        mpaint.setAntiAlias(true);
        //给小球设置粗细
        mpaint.setStrokeWidth(5);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(50,50,50,mpaint);
    }
    //传递颜色改变颜色
    public void setcolor(int color){
        mpaint.setColor(color);
        invalidate();
    }
}

小球的布局

<com.example.zklianxi.CreatView
    android:id="@+id/cricle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

动画实现的方法

public class MainActivity extends AppCompatActivity {

    private CreatView mcreatView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mcreatView = findViewById(R.id.cricle);


        int width=getWindowManager().getDefaultDisplay().getWidth();
        int height=getWindowManager().getDefaultDisplay().getHeight();

        ObjectAnimator objectAnimatorX=ObjectAnimator.ofFloat(mcreatView,"translationX",0,width-100);
        ObjectAnimator objectAnimatorY=ObjectAnimator.ofFloat(mcreatView,"translationY",0,height-100);
        AnimatorSet animatorSet=new AnimatorSet();
        animatorSet.setDuration(3000);
        animatorSet.play(objectAnimatorX).with(objectAnimatorY);
        animatorSet.start();
        animatorSet.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animator) {

            }

            @Override
            public void onAnimationEnd(Animator animator) {
                //跳转到登录页面
                startActivity(new Intent(MainActivity.this,LoginActivity.class));
                finish();
            }

            @Override
            public void onAnimationCancel(Animator animator) {

            }

            @Override
            public void onAnimationRepeat(Animator animator) {

            }
        });
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mcreatView.setcolor(Color.BLACK);
            }
        },1000);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mcreatView.setcolor(Color.BLUE);
            }
        },2000);
    }
}

写Mvp

view层

public interface UserView {

    void success(String data);

    void fail(String error);
}

Model层接口

public interface UserModel {

    interface CallBackListener{

    void success(String data);
    void fail(String error);
}
    //登录
    void doLogin(String phone,String pwd,CallBackListener listener);
    //注册
    void doRegister(String phone,String pwd,CallBackListener listener);
}

model层类

public class UserModelIml implements UserModel{

    //登录
    @Override
    public void doLogin(String phone, String pwd, final CallBackListener listener) {
        String registerurl="http://172.17.8.100/small/user/v1/login";
        FormBody.Builder builder=new FormBody.Builder();
        builder.add("phone",phone);
        builder.add("pwd",pwd);
        new OkHttp().post(registerurl,builder).result(new OkHttp.HttpListener() {
            @Override
            public void success(String data) {
                listener.success(data);
            }
            @Override
            public void fail(String error) {
                listener.fail(error);
            }
        });
    }
    //注册
    @Override
    public void doRegister(String phone, String pwd, final CallBackListener listener) {
        //走注册
        String registerurl="http://172.17.8.100/small/user/v1/register";
        FormBody.Builder builder=new FormBody.Builder();
        builder.add("phone",phone);
        builder.add("pwd",pwd);
        new OkHttp().post(registerurl,builder).result(new OkHttp.HttpListener() {
            @Override
            public void success(String data) {
                listener.success(data);
            }
            @Override
            public void fail(String error) {
                listener.fail(error);
            }
        });
    }
}

presenter层接口

public interface UserPresenter {
    //登录
    void doLogin(String phone,String pwd);
    //注册
    void doRegister(String phone,String pwd);

}

presenter类

public class UserPresenterIml implements UserModel, UserModel.CallBackListener {
    private UserModel userModel;
    private UserView userView;

    public UserPresenterIml(UserModel userModel, UserView userView) {
        this.userModel = userModel;
        this.userView = userView;
    }

    //登录
    @Override
    public void doLogin(String phone, String pwd, CallBackListener listener) {
        userModel.doLogin(phone,pwd,this);
    }
    //注册
    @Override
    public void doRegister(String phone, String pwd, CallBackListener listener) {
        userModel.doRegister(phone,pwd,this);
    }

    @Override
    public void success(String data) {
        userView.success(data);
    }

    @Override
    public void fail(String error) {
        userView.fail(error);
    }
    //内存泄漏
    public void destory(){
        if (userModel!=null){
            userModel=null;
        }
        if (userView!=null){
            userView=null;
        }
        System.gc();
    }
}

注册

public class Register extends AppCompatActivity implements View.OnClickListener, UserView, UserModel.CallBackListener {

    private EditText username,userpass,userpass2;
    private UserPresenterIml userPresenterIml;
    private SharedPreferences sp;
    private String name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        findViewById(R.id.btn_register).setOnClickListener(this);
        findViewById(R.id.tv_login).setOnClickListener(this);
        username =(EditText)findViewById(R.id.user_name);
        userpass = (EditText)findViewById(R.id.user_pass);
        userpass2 = (EditText)findViewById(R.id.user_pass2);

        userPresenterIml = new UserPresenterIml(new UserModelIml(),this);
        sp=getSharedPreferences("user",MODE_PRIVATE);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_register://点击注册
                doRegister();

                break;
            case R.id.tv_login://已有账号,立即登录
                finish();
                break;
        }
    }
    //注册
    private void doRegister() {
        name = username.getText().toString().trim();
        String pass = userpass.getText().toString().trim();
        String userpass=userpass2.getText().toString().trim();

        if (TextUtils.isEmpty(name)){
            toast("请输入您的账号");
            return;
        }
        if (TextUtils.isEmpty(pass)){
            toast("请输入您的密码");
            return;
        }
        if (TextUtils.isEmpty(userpass)){
            toast("请您确认您的密码");
            return;
        }
        if (!pass.equals(userpass)){
            toast("请您确认您的俩次密码是否一致");
            return;
        }
        //走注册
        userPresenterIml.doRegister(name,pass,this);
    }
    private void toast(String msg){
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
    }


    @Override
    public void success(String data) {
        UserBean bean=new Gson().fromJson(data,UserBean.class);
        toast(bean.getMessage());
        sp.edit().putString("user_name",name).commit();
        if (bean.getStatus().equals("0000")){
            finish();
        }

    }

    @Override
    public void fail(String error) {
        toast(error);
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }
    protected void onDestroy() {
        super.onDestroy();
        userPresenterIml.destory();
    }
}

登录

public class LoginActivity extends AppCompatActivity implements View.OnClickListener, UserView, UserModel.CallBackListener {

    private SharedPreferences sp;
    private EditText named,passd;
    private UserPresenterIml userPresenterIml;
    private CheckBox mchek;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        findViewById(R.id.liji).setOnClickListener(this);
        findViewById(R.id.btn_login).setOnClickListener(this);
        mchek =(CheckBox)findViewById(R.id.checkbox);
        named =(EditText)findViewById(R.id.user_name);
        passd = (EditText)findViewById(R.id.user_pass);
        sp=getSharedPreferences("user",MODE_PRIVATE);

        userPresenterIml = new UserPresenterIml(new UserModelIml(),this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        String Username=sp.getString("user_name",null);
        String Userpass=sp.getString("user_pass",null);
        if (!TextUtils.isEmpty(Username)){
            named.setText(Username);
        }
        if (!TextUtils.isEmpty(Userpass)){
            passd.setText(Userpass);
            mchek.setChecked(true);
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.liji://跳转到注册
                startActivity(new Intent(LoginActivity.this,Register.class));
                break;
            case R.id.btn_login:
                doLogin();
                break;
        }
    }

    private void doLogin() {
        String name = named.getText().toString().trim();
        String pass = passd.getText().toString().trim();
        if (TextUtils.isEmpty(name)){
            toast("请输入您的账号");
            return;
        }
        if (TextUtils.isEmpty(pass)){
            toast("请输入您的密码");
            return;
        }
       boolean isCheckbox= mchek.isChecked();
        if (isCheckbox){//保存
            sp.edit().putString("user_name",name).putString("user_pass",pass).commit();

        }else{//清空
            sp.edit().putString("user_name","").putString("user_pass","").commit();
        }
        //走登录
        userPresenterIml.doLogin(name,pass,this);


    }
    private void toast(String msg){
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void success(String data) {
        //toast(data);
        BeanJson beanJson = new Gson().fromJson(data, BeanJson.class);
        sp.edit().putString("user_name",beanJson.getResult().getPhone())
                .putString("user_nickName",beanJson.getResult().getNickName())
                .putString("user_pictrue",beanJson.getResult().getHeadPic())
                .commit();
        //跳转到用户信息展示页面

    }

    @Override
    public void fail(String error) {
        toast(error);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的网站登录界面代码,包括背景图案: ```html <!DOCTYPE html> <html> <head> <title>Login Page</title> <style> body { background-image: url('background.jpg'); background-size: cover; background-repeat: no-repeat; background-position: center; font-family: Arial, sans-serif; } h1 { text-align: center; font-size: 2.5em; margin-top: 50px; color: #fff; text-shadow: 2px 2px #000; } form { background-color: #fff; padding: 20px; border-radius: 5px; margin: 0 auto; max-width: 400px; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); } label { display: block; margin-bottom: 10px; font-size: 1.2em; color: #333; } input { display: block; width: 100%; padding: 10px; margin-bottom: 20px; font-size: 1.2em; border-radius: 5px; border: none; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); } input[type="submit"] { background-color: #333; color: #fff; font-size: 1.2em; padding: 10px; border: none; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; } input[type="submit"]:hover { background-color: #555; } </style> </head> <body> <h1>Login Page</h1> <form> <label for="username">Username:</label> <input type="text" id="username" name="username" required> <label for="password">Password:</label> <input type="password" id="password" name="password" required> <input type="submit" value="Login"> </form> </body> </html> ``` 在上面的代码中,我们在 `body` 元素中设置了一个背景图片,用于作为登录页面的背景。我们还为 `h1` 元素添了一些样式,使其在背景图案上更醒目。 登录表单在一个白色背景的 `form` 元素中,并带有一些样式,如圆角、阴影和输入框边框。登录按钮也带有样式,鼠标移动到上面时会有一个过渡动画。 这只是一个简单的示例,您可以根据自己的需求进行更改和定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值