QQ登陆界面

    技术2022-05-20  38

    QQ登陆界面的布局文件源代码如下:

    <?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="wrap_content"    android:background="@drawable/default_bg"    ><LinearLayout android:id="@+id/linearLayout01" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" ><RelativeLayout android:id="@+id/relativeLayout" android:background="@drawable/login_back" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60.0dip" android:layout_marginLeft="15.0dip" android:layout_marginRight="15.0dip" android:paddingTop="20.0dip" android:paddingLeft="10.0dip" android:paddingRight="10.0dip" > <ImageView  android:id="@+id/imageView01"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@drawable/qq_layouts"  /> <EditText  android:id="@+id/qq_acount"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:paddingLeft="45.0dip"  android:paddingRight="35.0dip"  android:layout_toRightOf="@id/imageView01"  android:layout_alignParentRight="true"  android:layout_alignParentTop="true"  android:inputType="number"  android:hint="@string/input_acount"  android:textSize="15sp"  android:background="@drawable/input"  /> <TextView  android:text="@string/acount"  android:gravity="center"  android:paddingLeft="8dip"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignTop="@id/qq_acount"  android:layout_alignLeft="@id/qq_acount"  android:layout_alignBottom="@id/qq_acount"  /> <ImageButton  android:id="@+id/imageButton01"  android:clickable="true"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignRight="@id/qq_acount"  android:layout_alignTop="@id/qq_acount"  android:layout_alignBottom="@id/qq_acount"  android:background="@drawable/more_selected"  /> <EditText  android:id="@+id/qq_password"  android:inputType="textPassword"  android:paddingLeft="45dip"  android:layout_below="@id/qq_acount"  android:layout_alignParentRight="true"  android:layout_alignLeft="@id/qq_acount"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:background="@drawable/input"  /> <TextView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignLeft="@id/qq_password"  android:layout_alignTop="@id/qq_password"  android:layout_alignBottom="@id/qq_password"  android:paddingLeft="8dip"  android:gravity="center"  android:text="@string/password"  android:textSize="15sp"  /> <CheckBox  android:id="@+id/checkBox01"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_below="@id/imageView01"  android:layout_alignParentLeft="true"  android:layout_marginTop="15.0dip"  android:text="@string/rememberPassword"  android:checked="true"  android:button="@drawable/check"  /> <CheckBox  android:id="@+id/checkBox02"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignTop="@id/checkBox01"  android:layout_alignParentRight="true"  android:layout_marginRight="15.0dip"  android:text="@string/autoLogin"  android:checked="false"  android:button="@drawable/check"  /> <Button  android:id="@+id/btn01"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_below="@id/checkBox01"  android:layout_marginLeft="50.0dip"  android:layout_marginRight="50.0dip"  android:text="@string/login"  android:textSize="15sp"  /></RelativeLayout><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20.0dip" android:layout_marginRight="20.0dip" android:stretchColumns="1" > <TableRow>  <CheckBox   android:id="@+id/checkBox03"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="@string/unvisibleLogin"   android:button="@drawable/check"   />  <CheckBox   android:id="@+id/checkBox04"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="@string/openVibration"   android:button="@drawable/check"   android:layout_gravity="right"   /> </TableRow> <TableRow>  <CheckBox   android:id="@+id/checkBox05"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="@string/receiveMsg"   android:button="@drawable/check"   />  <CheckBox   android:id="@+id/checkBox06"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="静音登陆"   android:layout_gravity="right"   android:button="@drawable/check"   /> </TableRow></TableLayout></LinearLayout><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10.0dip" android:background="@drawable/bottom" > <ImageButton  android:id="@+id/imageButton02"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:background="@drawable/option"  /></LinearLayout></LinearLayout>

    其中用到的图片需要放在drawable文件夹下。strings.xml文件内容:

    <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, QQLoginActivity!</string>    <string name="app_name">QQLogin2</string>    <string name="input_acount">请输入账号</string>    <string name="acount">账号</string>    <string name="rememberPassword">记住密码</string>    <string name="autoLogin">自动登陆</string>    <string name="password">密码</string>    <string name="login">登陆</string>    <string name="unvisibleLogin">隐身登陆</string>    <string name="openVibration">开启振动</string>    <string name="receiveMsg">接收群消息</string></resources>

    如果要保存上次登陆的QQ账号可使用类SharedPreferences实现,大概代码如下:

    //文件QQLoginActivity.java

    package com.qqlogin2;

    import java.util.LinkedHashSet;import java.util.Set;

    import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.view.Gravity;import android.view.KeyEvent;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.PopupWindow;import android.widget.Toast;

    public class QQLoginActivity extends Activity { private CheckBox rememberPassword ; private EditText etAcount; private EditText etPassword; private ImageView option; private PopupWindow pop;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.login);                rememberPassword = (CheckBox) findViewById(R.id.checkBox01);        etAcount =  (EditText) findViewById(R.id.qq_acount);                etPassword = (EditText) findViewById(R.id.qq_password);                option =  (ImageView) findViewById(R.id.imageButton02);                init();                initPop();                option.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub    if(!pop.isShowing()){     pop.showAtLocation(v, Gravity.BOTTOM, 0, 50);    }else{     pop.dismiss();    }   }  });               /* dropdown.setOnClickListener(new OnClickListener(){

       @Override   public void onClick(View v) {    // TODO Auto-generated method stub    Toast.makeText(QQLoginActivity.this,"dropdown", Toast.LENGTH_SHORT).show();    AlertDialog.Builder builder = new AlertDialog.Builder(QQLoginActivity.this);    builder.setTitle("choose acount");        final String[] acounts = null;    builder.setSingleChoiceItems(acounts, -1, new DialogInterface.OnClickListener() {          @Override     public void onClick(DialogInterface dialog, int which) {      // TODO Auto-generated method stub      String acountSpec = acounts[which];      etAcount.setText(acountSpec);      dialog.dismiss();     }    });    builder.create().show();   }});*/            }        private void initPop(){     View view = getLayoutInflater().inflate(R.layout.pop, null);     pop = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);          ImageButton quit = (ImageButton) view.findViewById(R.id.quit);     quit.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub    Toast.makeText(QQLoginActivity.this, "quit", Toast.LENGTH_SHORT).show();    finish();   }  });    }        protected void init() {     // TODO Auto-generated method stub     super.onResume();     SharedPreferences preferences = getSharedPreferences("qq", Context.MODE_WORLD_READABLE);     String acount = preferences.getString("acount", "");     String password = preferences.getString("password", "");     boolean isRemember = preferences.getBoolean("isRemember", true);     rememberPassword.setChecked(isRemember);                    if(!acount.equals("")){      etAcount.setText(acount);     }     if(!password.equals("")){      etPassword.setText(password);     }    }        @Override    protected void onStop() {     // TODO Auto-generated method stub     super.onStop();     Set<String> stringSet = new LinkedHashSet<String>();          SharedPreferences preferences = getSharedPreferences("qq", Context.MODE_PRIVATE);     Editor editor = preferences.edit();     boolean isChecked = rememberPassword.isChecked();     editor.putBoolean("isRemember", isChecked);          String acount = etAcount.getText().toString().trim();          if(!acount.equals("") ){      editor.putString("acount", acount);      stringSet.add(acount);      if(rememberPassword.isChecked()){       String password = etPassword.getText().toString();       editor.putString("password", password);      }      else{       editor.putString("password", "");      }      editor.commit();     }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {     // TODO Auto-generated method stub     if(keyCode==KeyEvent.KEYCODE_MENU){      if(pop.isShowing()){       pop.dismiss();      }else{       pop.showAtLocation(option, Gravity.BOTTOM, 0, 50);      }      return true;     }     else if(keyCode==KeyEvent.KEYCODE_BACK){      if(pop.isShowing()){       pop.dismiss();      }      else{       AlertDialog.Builder builder = new AlertDialog.Builder(this);       builder.setTitle("确定要退出程序吗");       builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override        public void onClick(DialogInterface dialog, int which) {         // TODO Auto-generated method stub         finish();        }       });       builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                @Override        public void onClick(DialogInterface dialog, int which) {         // TODO Auto-generated method stub         dialog.dismiss();        }       });       builder.show();      }      return true;     }     else{      return super.onKeyDown(keyCode, event);     }    }} 


    最新回复(0)