Android QQ登录界面绘制代码_Android

先看看效果图:

首先过程中碰到的几个问题: 

1、对 EditText 进行自定义背景 

2、运行时自动 EditText 自动获得焦点 

3、在获得焦点时即清空 hint ,而不是输入后清空

 4、清空按钮的出现时机(在得到焦点并且有输入内容时) 

---  这些问题都有一一解决 ---

以下是代码: 

布局 fragment_main(问题2)

<!-- android:focusable="true"
   android:focusableInTouchMode="true"
   把EditText默认的行为截断了! -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#ECEDF1"
  android:focusable="true"
  android:focusableInTouchMode="true"
  tools:context="com.dragon.android.qqlogin.MainActivity$PlaceholderFragment" >

  <ImageView
    android:id="@+id/imageView1"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="40dp"
    android:src="@drawable/a" />   

  <EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/imageView1"
    android:ems="10"
    android:background="@drawable/bg_edittext"
    android:inputType="textPersonName"
    android:gravity="center"
    android:textColor="#6A6A6C"
    android:hint="@string/inaccount"
    android:textColorHint="#ECEDDD">
  </EditText>

  <EditText
    android:id="@+id/editText2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/editText1"
    android:ems="10"
    android:background="@drawable/bg_edittext"
    android:inputType="textPassword"
    android:gravity="center"
    android:textColor="#6A6A6C"
    android:hint="@string/inpwd"
    android:textColorHint="#ECEDDD" >
  </EditText>

  <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_below="@id/editText2"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="10dp"
    android:background="@drawable/bg_button"
    android:text="@string/button"
    android:gravity="center"
    android:textColor="#F9FAFB" />

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:padding="10dp" >

    <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:text="@string/faillogin"
      android:textColor="#0EB1EF" />

    <TextView
      android:id="@+id/textView3"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="right"
      android:text="@string/regist"
      android:textColor="#0EB1EF" />
  </LinearLayout>

  <Button
    android:id="@+id/button2"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_alignTop="@id/editText1"
    android:layout_marginTop="15dp"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"
    android:background="@drawable/clear"
    android:visibility="invisible" />

  <Button
    android:id="@+id/button3"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_alignTop="@id/editText2"
    android:layout_marginTop="15dp"
    android:layout_alignLeft="@+id/button2"
    android:background="@drawable/clear"
    android:visibility="invisible" />

</RelativeLayout>

Button 和 EditText 的背景(问题1)

1.bg_button

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

  <stroke android:width="1px" android:color="#00ACED" />

  <solid android:color="#00ACED" />

  <corners android:radius="10dp" />

</shape>

2.bg_edittext

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

  <stroke android:width="1px" android:color="#ECEDF1" />

  <solid android:color="#F9FAFB" />

  <corners android:radius="10dp" />

  <padding
    android:top="10dp"
    android:bottom="10dp"/>

</shape>

3.strings

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <string name="app_name">qqloginnew</string>
  <string name="action_settings">Settings</string>
  <string name="button">登录</string>
  <string name="faillogin">无法登录?</string>
  <string name="regist">新用户注册</string>
  <string name="inaccount">QQ号/手机号/邮箱</string>
  <string name="inpwd">密码</string>
  <string name="sucess">登录成功</string>

</resources>

MainActivity (问题3、4.....)

package com.dragon.android.qqloginnew;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
  private EditText editText1;
  private EditText editText2;
  // private Button button;
  private Button clearButton1;
  private Button clearButton2;

  // 得到strings中的属性
  // private String string2 = getResources().getString(R.string.inaccount);

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

    editText1 = (EditText) findViewById(R.id.editText1);
    editText2 = (EditText) findViewById(R.id.editText2);

    // button = (Button) findViewById(R.id.button1);
    clearButton1 = (Button) findViewById(R.id.button2);
    clearButton2 = (Button) findViewById(R.id.button3);

    // 对EditText进行焦点变更监听
    editText1.setOnFocusChangeListener(new EditTextListener(clearButton1));
    editText2.setOnFocusChangeListener(new EditTextListener(clearButton2));

    // 对清空按钮进行点击监听
    clearButton1.setOnClickListener(new ClearButtonListener());
    clearButton2.setOnClickListener(new ClearButtonListener());

    // 对EditText进行编辑监听
    editText1.addTextChangedListener(new MyEditTextWatcher(editText1));
    editText2.addTextChangedListener(new MyEditTextWatcher(editText2));
  }

  /**
   * 对EditText的内容进行实时监控
   *
   * @author Auser
   *
   */
  class MyEditTextWatcher implements TextWatcher {
    private CharSequence temp;
    private EditText editText;

    public MyEditTextWatcher(EditText editText) {
      this.editText = editText;
    }

    @Override
    // int start开始的位置, int count被改变的旧内容数, int after改变后的内容数量
    public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
      // 这里的s表示改变之前的内容,通常start和count组合,可以在s中读取本次改变字段中被改变的内容。而after表示改变后新的内容的数量。
    }

    @Override
    // int start开始的位置, int before改变前的内容数量, int count新增量
    public void onTextChanged(CharSequence s, int start, int before,
        int count) {
      // 这里的s表示改变之后的内容,通常start和count组合,可以在s中读取本次改变字段中新的内容。而before表示被改变的内容的数量。
      temp = s;
    }

    @Override
    // 表示最终内容
    public void afterTextChanged(Editable s) {
      if (temp.length() > 0) {
        // 设置清空按钮为可见
        if (editText == editText1) {
          clearButton1.setVisibility(View.VISIBLE);
        } else if (editText == editText2) {
          clearButton2.setVisibility(View.VISIBLE);
        }
      } else {
        // 设置清空按钮不可见
        if (editText == editText1) {
          clearButton1.setVisibility(View.INVISIBLE);
        } else if (editText == editText2) {
          clearButton2.setVisibility(View.INVISIBLE);
        }
      }
    }
  }

  /**
   * 清空按钮点击事件
   *
   * @author
   *
   */
  class ClearButtonListener implements OnClickListener {

    @Override
    public void onClick(View view) {
      if (view == clearButton1) {
        editText1.setText("");
      } else if (view == clearButton2) {
        editText2.setText("");
      }
    }
  }

  /**
   * 焦点变更事件
   *
   * @author Auser
   *
   */
  class EditTextListener implements OnFocusChangeListener {
    private Button clear;

    public EditTextListener(Button clear) {
      this.clear = clear;
    }

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
      EditText textView = (EditText) v;
      String hint;
      if (hasFocus) {
        // 当获取焦点时如果内容不为空则清空按钮可见
        if (!textView.getText().toString().equals("")) {
          clear.setVisibility(View.VISIBLE);
        }
        // if (textView == editText2) {
        // // 设置输入格式为不可见的密码格式
        // textView.setInputType(InputType.TYPE_CLASS_TEXT
        // | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        // }
        hint = textView.getHint().toString();
        // 给TextView添加额外的数据
        textView.setTag(hint);
        textView.setHint("");
      } else {
        // 当失去焦点时清空按钮不可见
        clear.setVisibility(View.INVISIBLE);
        // if (textView == editText2) {
        // // 设置输入格式为可见的密码格式
        // textView.setInputType(InputType.TYPE_CLASS_TEXT
        // | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
        // }
        // 取出之前添加的额外数据
        hint = textView.getTag().toString();
        textView.setHint(hint);
      }
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
QQ登录界面
android qq登录界面、androidqq登录界面、android仿qq登录界面、android 界面绘制原理、osx android 界面绘制,以便于您获取更多的相关知识。

时间: 2024-11-02 12:01:09

Android QQ登录界面绘制代码_Android的相关文章

高仿Windows Phone QQ登录界面实例代码

 这篇文章主要介绍了高仿Windows Phone QQ登录界面实例代码,有需要的朋友可以参考一下 给 TextBox文本框前添加图片   扩展PhoneTextBox:添加一个类"ExtentPhoneTextBox"继承 PhoneTextBox ,在"ExtentPhoneTextBox"类中添加属性项:     代码如下: public class ExtentPhoneTextBox : PhoneTextBox     {         /// <

高仿Windows Phone QQ登录界面实例代码_实用技巧

给 TextBox文本框前添加图片 扩展PhoneTextBox:添加一个类"ExtentPhoneTextBox"继承 PhoneTextBox ,在"ExtentPhoneTextBox"类中添加属性项: 复制代码 代码如下: public class ExtentPhoneTextBox : PhoneTextBox    {        /// <summary>        /// 文本框图片属性        /// </summa

Android实现QQ登录界面遇到问题及解决方法_Android

先给大家炫下效果图: 首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得到焦点并且有输入内容时) ......... --- 这些问题都有一一解决 --- 以下是代码: 布局 fragment_main(问题2) <!-- android:focusable="true" android:focusableInTouchMode=&

使用java swing实现qq登录界面示例分享_java

用Java Swing做的一个QQ登录界面 复制代码 代码如下: import java.awt.Container;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax

Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy

原文:Android菜鸟的成长笔记(3)--给QQ登录界面说So Easy 上一篇:Android菜鸟的成长笔记(2)--第一个Android应用 我们前面已经做了第一个Android应用程序,虽然有点像QQ的登录界面,但是很多地方还是很难看,这一篇咱们来将这个界面做成一个标准的商业界面,并一起来了解Android中的代码运行的原理. 好吧,咱们开始吧,首先启动模拟器,为了让咱们的界面和QQ的登录界面一样我下载了一个QQ的apk文件,下面咱们将这个apk安装到我们的模拟器上,看看效果. 怎么将a

Android miniTwitter登录界面开发实例

本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面. 先贴上最终要完成的效果图: miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearLayout布局,关于背景渐变色就不再贴代码了,效果如下图所示: 第二部分,红色线区域内,包括1,2,3,4 如图所示: 红色的1表示的是一个带圆

密码-Android的登录界面和注册界面之间的跳转问题

问题描述 Android的登录界面和注册界面之间的跳转问题 想做一个简易系统 1.软件名字为"CardsAssistant",兼容Android4.0以上版本. 2. 当用户启动本软件,显示标题为"CardsAssistant"的登录页面,如图1所示,登录页面中有两个名为"账户名"."密码"的TextView,这两个TextView分别对应一个EditText,当用户点击"取消"按钮时,当前CardsAss

Boostrap实现的登录界面实例代码_jquery

Bootstrap它是一个开源的web开发前端框架. 这几天我看了下Bootstrap的官方文档.看到其中的Basic-form,突然想实现下登录界面.然后想了下实现的思路,于是就打开了桌面的H5 builder码起来.代码实现起来其实不难,但是碰到个问题,就是Bootstrap的布局控制好像用.col类难以实现居中显示,虽然可以用modal(模态框)实现弹出居中,但是我暂时不想用modal框.发现问题后,第一想法是自己再定义个css进行一个控制.但是又不知道行业内的大牛是不是只用Bootstr

如何修改QQ登录界面上的系统文字

如何修改QQ登录界面上的系统文字?下面小编给大家介绍下.   首先,进入QQ的安装目录,xx(安装路径)TencentQQI18N2052这个文件夹.用记事本打开其中名为"StringBundle.xml"的文件.   这个文件里的中文内容,就是QQ登录窗口中涉及到的所有文字信息,我们只要将它们修改为自己想要的内容,然后保存即可.   无需重启电脑,现在运行QQ快捷方式,登录界面的文字部分是不是已经变成我们修改的版本了?   如果修改StringBundle.xml文件后保存报错,可以