当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发实例之登录界面的实现

Android开发实例之登录界面的实现

2019年07月24日  | 移动技术网IT编程  | 我要评论

光大银行柳州分行,7tff,伤感爱情短信

本文要演示的android开发实例是如何完成一个android中的minitwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面。

       minitwitter登录界面效果图

       先贴上最终要完成的效果图:

       minitwitter登录界面的布局分析

       首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分。

       第一部分是一个带渐变色背景的linearlayout布局,关于背景渐变色就不再贴代码了,效果如下图所示:

       第二部分,红色线区域内,包括1,2,3,4  如图所示:

       红色的1表示的是一个带圆角且背景色为#55ffffff(淡蓝色)的relativelayout布局,代码如下:

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#55ffffff" /> 
    <!-- 设置圆角  
    注意:    bottomrightradius是左下角而不是右下角 bottomleftradius右下角--> 
    <corners android:topleftradius="10dp" android:toprightradius="10dp" 
        android:bottomrightradius="10dp" android:bottomleftradius="10dp"/> 
</shape> 

solid表示填充色,这里填充的是淡蓝色。corners是设置圆角。

       dp (即dip,device independent pixels)设备独立像素:这个和设备硬件有关,一般我们为了支持wvga、hvga和qvga ,不依赖像素。在android上开发的程序将会在不同分辨率的手机上运行。为了让程序外观不至于相差太大,所以引入了dip的概念。比如定义一个矩形10 x 10dip. 在分辨率为160dpi 的屏上,比如g1,正好是10 x 10像素。 而在240 dpi 的屏,则是15 x 15 像素。换算公式为 pixs = dips * (density/160)。density 就是屏的分辨率。

       然后relativelayou的background引用此drawable,具体relativelayout设置如下:

xml/html代码

<relativelayout 
     android:id="@+id/login_div" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="15dip" 
     android:layout_margin="15dip" 
     android:background="@drawable/background_login_div_bg" 
     > 
</relativelayout> 

       padding 是指内边距(也就是指内容与边框的距离),layout_margin为外边距(它的上一层与边框的距离)。

       接下来是区域2,为账号的文本和输入框,首先是账号的文本,代码如下:

xml/html代码

<textview 
    android:id="@+id/login_user_input" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignparenttop="true" 
    android:layout_margintop="5dp" 
    android:text="@string/login_label_username" 
    style="@style/normaltext"/> 

       android:layout_alignparenttop 这里表示此textview的位置处于顶部

       android:layout_margintop="5dp" 这里表示此textview的边框与relativelayout的顶部边框距离有5dp

       这里需要对这个textview设置下字体颜色和字体大小,定义在res/style.xml里面:

xml/html代码

<style name="normaltext" parent="@android:style/textappearance"> 
    <item name="android:textcolor">#444</item> 
    <item name="android:textsize">14sp</item> 
</style> 

         定义账号的输入框,如下:

xml/html代码

<edittext 
    android:id="@+id/username_edit" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/login_username_hint" 
    android:layout_below="@id/login_user_input" 
    android:singleline="true" 
    android:inputtype="text"/> 

 android:hint 输入框里面的提示文字,android:layout_below这里是设置为在账号的文本框的下面,android:singleline 为单行输入(即你输入回车的时候不会在换行了),android:inputtype这里text表示输入的类型为文本。

       区域3是密码文本和输入框,同区域2,代码如下:

xml/html代码

<textview 
   android:id="@+id/login_password_input" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:layout_below="@id/username_edit" 
   android:layout_margintop="3dp" 
   android:text="@string/login_label_password" 
   style="@style/normaltext"/> 
<edittext 
   android:id="@+id/password_edit" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:layout_below="@id/login_password_input" 
   android:password="true" 
   android:singleline="true" 
   android:inputtype="textpassword" 
/> 

            区域4,登录按钮:

xml/html代码

<button 
   android:id="@+id/signin_button" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:layout_below="@id/password_edit" 
   android:layout_alignright="@id/password_edit" 
   android:text="@string/login_label_signin" 
   android:background="@drawable/blue_button" 
/> 

       第三部分:底下的文字和两张图片,分别标记了1,2,3,4:

    区域1:还是一个relativelayout,但这里设置的很简单,代码如下:

xml/html代码

<relativelayout 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content"> 
</relativelayout> 

 区域2:"没有账号?注册"这几个文字定义在string里面,包含了一个<a>标签:

xml/html代码

<string name="login_register_link">没有帐号? <a href="#" mce_href="#">注册</a></string>  

       定义如下:

xml/html代码

<textview android:id="@+id/register_link" 
  android:text="@string/login_register_link" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:layout_marginleft="15dp" 
  android:textcolor="#888" 
  android:textcolorlink="#ff0066cc" 
/> 

textview是支持简单的html标签的,如<a>标签,但并不是支持所有标签,支持更复杂的html标签得用webview组件。

       android:textcolorlink是设置文字链接的颜色. 虽然textview支持<a>标签,但是这里是不能点此链接的,不要被假象迷惑。

       区域3是一直猫的卡通图片,貌似有点丑,将就下吧:

xml/html代码

<imageview android:id="@+id/minitwitter_logo" 
    android:src="@drawable/cat" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignparentright="true" 
    android:layout_alignparentbottom="true" 
    android:layout_marginright="25dp" 
    android:layout_marginleft="10dp" 
    android:layout_marginbottom="25dp" 
/> 

       android:layout_alignparentright="true" 位于layout的最右边

       android:layout_alignparentbottom="true"  位于layout的最底部

       android:layout_marginright="25dp"  该imageview的边框距离layout边框有25dp,其他的margin类似。

       区域4 是一个带文字的图片的imageview:

xml/html代码

<imageview android:src="@drawable/logo" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:layout_toleftof="@id/minitwitter_logo" 
   android:layout_alignbottom="@id/minitwitter_logo" 
   android:paddingbottom="8dp" 
/> 

       android:layout_toleftof="@id/minitwitter_logo"  在那个小猫imageview的左边(水平位置)

       android:layout_alignbottom="@id/minitwitter_logo"  这里意思是这两个imageview(区域3和区域4)下边缘对齐

       android:paddingbottom="8dp"  图片距离imageview底部边框8dp,也就是将图片上抬个8dp

       实现minitwitter登陆界面的具体步骤

       具体步骤如下:

       第一步:一些字符串定义

       /minitwitterlogindemo/res/values/strings.xml

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
  <string name="hello">hello world, loginactivity!</string> 
  <string name="login_label_username">帐号</string> 
  <string name="login_label_password">密码</string> 
  <string name="login_label_signin">登 录</string> 
  <string name="login_status_logging_in">登录中...</string> 
  <string name="login_username_hint">email或手机号</string> 
  <string name="login_register_link">没有帐号? <a href="#" mce_href="#">注册</a></string> 
  <string name="app_name">minitwitter</string> 
</resources> 

第二步:

       /minitwitterlogindemo/res/values/style.xml

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="normaltext" parent="@android:style/textappearance">            
    <item name="android:textcolor">#444</item> 
    <item name="android:textsize">14sp</item> 
    </style> 
</resources> 

 第三步:背景色为渐变色

       /minitwitterlogindemo/res/drawable-mdpi/background_login.xml

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
   <gradient 
      android:startcolor="#ffacdae5" 
      android:endcolor="#ff72cae1" 
      android:angle="45" 
   /> 
</shape> 

 第四步:背景色味淡蓝色且为圆角

       /minitwitterlogindemo/res/drawable-mdpi/background_login_div_bg.xml

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#55ffffff" /> 
    <!-- 设置圆角  
    注意:    bottomrightradius是左下角而不是右下角 bottomleftradius右下角--> 
    <corners android:topleftradius="10dp" android:toprightradius="10dp" 
        android:bottomrightradius="10dp" android:bottomleftradius="10dp"/> 
</shape> 

 第五步:

       /minitwitterlogindemo/res/layout/login.xml

xml/html代码

<?xml version="1.0" encoding="utf-8"?> 
<linearlayout 
 xmlns:android="http://schemas.android.com/apk/res/android" 
 android:orientation="vertical" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 android:background="@drawable/background_login"> 
 <!-- padding 内边距  layout_margin 外边距  
         android:layout_alignparenttop 布局的位置是否处于顶部 --> 
 <relativelayout 
     android:id="@+id/login_div" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="15dip" 
     android:layout_margin="15dip" 
     android:background="@drawable/background_login_div_bg" 
     > 
     <!-- 账号 --> 
     <textview 
         android:id="@+id/login_user_input" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignparenttop="true" 
         android:layout_margintop="5dp" 
         android:text="@string/login_label_username" 
         style="@style/normaltext"/> 
     <edittext 
         android:id="@+id/username_edit" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:hint="@string/login_username_hint" 
         android:layout_below="@id/login_user_input" 
         android:singleline="true" 
         android:inputtype="text"/> 
  <!-- 密码 text --> 
  <textview 
      android:id="@+id/login_password_input" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/username_edit" 
      android:layout_margintop="3dp" 
      android:text="@string/login_label_password" 
      style="@style/normaltext"/> 
  <edittext 
      android:id="@+id/password_edit" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/login_password_input" 
      android:password="true" 
      android:singleline="true" 
      android:inputtype="textpassword" 
  /> 
  <!-- 登录button --> 
  <button 
      android:id="@+id/signin_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/password_edit" 
      android:layout_alignright="@id/password_edit" 
      android:text="@string/login_label_signin" 
      android:background="@drawable/blue_button" 
  /> 
 </relativelayout> 
 
 
 <relativelayout 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   > 
     <textview android:id="@+id/register_link" 
       android:text="@string/login_register_link" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginleft="15dp" 
       android:textcolor="#888" 
       android:textcolorlink="#ff0066cc" 
     /> 
      <imageview android:id="@+id/minitwitter_logo" 
        android:src="@drawable/cat" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignparentright="true" 
        android:layout_alignparentbottom="true" 
        android:layout_marginright="25dp" 
        android:layout_marginleft="10dp" 
        android:layout_marginbottom="25dp" 
         /> 
     <imageview android:src="@drawable/logo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_toleftof="@id/minitwitter_logo" 
       android:layout_alignbottom="@id/minitwitter_logo" 
       android:paddingbottom="8dp" 
       /> 
      </relativelayout> 
 
</linearlayout> 

  第七步:

       /minitwitterlogindemo/src/com/mytwitter/acitivity/loginactivity.java

       这里要注意的是,该activity是无标题的,设置无标题需要在setcontentview之前设置,否则会报错。

java代码

package com.mytwitter.acitivity;  
 
import android.app.activity;  
import android.os.bundle;  
import android.view.window;  
 
public class loginactivity extends activity {  
  @override 
  public void oncreate(bundle savedinstancestate) {  
    super.oncreate(savedinstancestate);  
    requestwindowfeature(window.feature_no_title);  
    setcontentview(r.layout.login);  
  }  
} 

 到此,android中的minitwitter登录界面的制作就介绍完毕了,是不是做出不错的登录界面并不算难呢?

以上就是对android登录界面的开发示例,希望能帮助开发android应用的朋友,谢谢大家对本站的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网