仿qq登录界面(包括下拉删除以及半透明忘记密码)

来源:互联网 发布:seo sem是什么意思 编辑:程序博客网 时间:2024/04/29 13:44

首先,我们创建基本的登陆界面,包括输入框、头像,效果如下图:

////////

mmmmmm

nnnnnn

以下是activity_main

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#e7e7e7"    android:orientation="vertical" >    <ImageView        android:id="@+id/loginhead"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="68dp"        android:background="@drawable/login_default"        android:contentDescription="@string/app_name" />    <LinearLayout        android:id="@+id/textbox"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginLeft="15.0dip"        android:layout_marginRight="15.0dip"        android:layout_marginTop="8.0dip"        android:orientation="vertical" >        <LinearLayout            android:id="@+id/layout1"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@drawable/login_input"            android:orientation="vertical" >            <LinearLayout                android:id="@+id/account"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:gravity="right"                android:orientation="horizontal" >                <EditText                    android:id="@+id/account_input"                    android:layout_width="0dp"                    android:layout_height="44dp"                    android:layout_weight="1"                    android:background="@null"                    android:hint="@string/idtxthint"                    android:inputType="number"                    android:paddingLeft="15dp"                    android:singleLine="true"                    android:textColorHint="#999999"                    android:textSize="18sp" />                <ImageView                    android:id="@+id/btn_select"                    android:layout_width="wrap_content"                    android:layout_height="44dp"                    android:layout_marginRight="15dp"                    android:layout_marginTop="5dp"                    android:contentDescription="@string/app_name"                    android:src="@drawable/login_more_up" />            </LinearLayout>            <View                android:layout_width="match_parent"                android:layout_height="0.5dp"                android:background="#CACDD1" />            <EditText                android:id="@+id/password"                android:layout_width="match_parent"            android:layout_height="44dp"            android:background="@null"            android:hint="@string/pwdtxthint"            android:inputType="textPassword"            android:singleLine="true"            android:textColorHint="#999999"            android:paddingLeft="15dp"            android:textSize="18sp" />        </LinearLayout>        <Button            android:id="@+id/login"            android:layout_width="match_parent"            android:layout_height="45dp"            android:layout_marginTop="20dp"            android:background="@drawable/login_button_style"            android:text="@string/loginbtntext"            android:textColor="#ffffff"            android:textSize="19sp" />    </LinearLayout>    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_marginBottom="20dp"        android:layout_marginLeft="15dp"        android:layout_marginRight="15dp"        android:orientation="vertical" >        <TextView            android:id="@+id/click_text"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:text="@string/forget"            android:textColor="#0079FF"            android:textSize="16sp" />        <Button            android:id="@+id/new_user"            android:layout_width="67dp"            android:layout_height="30dp"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true"            android:background="@drawable/login_button_style1"            android:text="@string/new_user"            android:textColor="@drawable/btn_color"            android:textSize="15sp" />    </RelativeLayout></LinearLayout>

其次,是MainActivity

package com.example.qqlogin;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.os.Handler;import android.os.Handler.Callback;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;public class MainActivity extends Activity implements Callback {// PopupWindow对象private PopupWindow selectPopupWindow = null;// 自定义Adapterprivate OptionsAdapter optionsAdapter = null;// 下拉框选项数据源private List<Map<String, Object>> datas;// 下拉框依附附件private LinearLayout parent;// 下拉框依附组件宽度,也将作为下拉框的宽度private int pwidth;// 文本框private EditText account;// 下拉箭头图片组件private ImageView image;// 展示所有下拉选项的listViewprivate ListView listView = null;// 用来处理选中或者删除下拉项消息private Handler handler;// 是否初始化完成标志private boolean flag = false;private ImageView head;private Button login;private TextView clicktext;private Integer[] imgeIDs = { R.drawable.head, R.drawable.head1,R.drawable.head2, R.drawable.head3 };private String[] number = { "945153885", "297196623", "221412188","582659073" };private static Integer delImage = R.drawable.quit;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);while (!flag) {initWedget();flag = true;}}/** * 初始化界面 */private void initWedget() {handler = new Handler(MainActivity.this);parent = (LinearLayout) findViewById(R.id.account);account = (EditText) findViewById(R.id.account_input);image = (ImageView) findViewById(R.id.btn_select);head = (ImageView) findViewById(R.id.loginhead);login = (Button) findViewById(R.id.login);clicktext = (TextView) findViewById(R.id.click_text);clicktext.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);int width = parent.getWidth();pwidth = width;image.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {if (flag) {PopupWindowShowing();}}});initPopupWindow();login.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {startActivity(new Intent(MainActivity.this, MainActivity.class));}});clicktext.setOnClickListener(new OnClickListener() {public void onClick(View v) {startActivity(new Intent(MainActivity.this,ForgetActivity.class));}});}/** * 初始化下拉框 */@SuppressWarnings("deprecation")private void initPopupWindow() {datas = initDatas();View loginwindow = (View) this.getLayoutInflater().inflate(R.layout.options, null);listView = (ListView) loginwindow.findViewById(R.id.list);optionsAdapter = new OptionsAdapter(this, handler, datas);listView.setAdapter(optionsAdapter);selectPopupWindow = new PopupWindow(loginwindow, pwidth,LayoutParams.WRAP_CONTENT, true);selectPopupWindow.setOutsideTouchable(true);selectPopupWindow.setBackgroundDrawable(new BitmapDrawable());}protected void PopupWindowShowing() {selectPopupWindow.showAsDropDown(parent, 0, -3);}/** * 下拉框数据 *  * @return */private List<Map<String, Object>> initDatas() {List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();for (int i = 0; i < number.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("headImage", imgeIDs[i]);map.put("number", number[i]);map.put("delimage", delImage);listItems.add(map);}return listItems;}@Overridepublic boolean handleMessage(Message message) {Bundle data = message.getData();switch (message.what) {case 1:int selIndex = data.getInt("selIndex");head.setBackgroundResource((Integer) datas.get(selIndex).get("headImage"));account.setText((CharSequence) datas.get(selIndex).get("number"));dismiss();break;case 2:int delIndex = data.getInt("delIndex");datas.remove(delIndex);optionsAdapter.notifyDataSetChanged();break;}return false;}private void dismiss() {selectPopupWindow.dismiss();}}
然后是下拉列表options
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ListView android:id="@+id/list"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:divider="#EDEDED"        android:cacheColorHint="#00000000">           </ListView>   </LinearLayout>
下拉列表单项布局option_item

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#EDEDED"        android:gravity="center_vertical"        android:orientation="horizontal" >        <View            android:layout_width="2px"            android:layout_height="fill_parent"            android:background="@drawable/line" />        <ImageView            android:id="@+id/head_option"            android:layout_width="36dp"            android:layout_height="36dp"            android:layout_marginBottom="3dip"            android:layout_marginLeft="10dip"            android:layout_marginTop="3dip" />        <RelativeLayout            android:layout_width="fill_parent"            android:layout_height="45dip"            android:gravity="center_vertical" >            <ImageView                android:id="@+id/delImage"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_alignParentRight="true"                android:layout_centerVertical="true"                android:layout_marginRight="10dp"                android:gravity="center_vertical"                android:src="@drawable/quit" />            <TextView                android:id="@+id/item_text"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_alignParentLeft="true"                android:layout_centerVertical="true"                android:layout_marginLeft="12dip"                android:textColor="#666666"                android:textSize="18sp" />            <View                android:layout_width="2px"                android:layout_height="fill_parent"                android:layout_alignParentRight="true"                android:background="@drawable/line" />        </RelativeLayout>    </LinearLayout>    <View        android:layout_width="fill_parent"        android:layout_height="2px"        android:background="@drawable/line" /></LinearLayout>
然后是半透明的忘记密码部分activity_forget

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:gravity="center_horizontal"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/pop_layout"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_marginLeft="7dip"        android:layout_marginRight="7dip"        android:gravity="center_horizontal"        android:orientation="vertical" >        <LinearLayout            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:layout_marginLeft="1.0dip"            android:layout_marginRight="1.0dip"            android:layout_marginTop="10.0dip"            android:background="@drawable/shape_bg"            android:orientation="vertical" >            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:background="@null"                android:gravity="center_vertical"                android:orientation="horizontal" >                <TextView                    android:id="@+id/btn_forget"                    android:layout_width="fill_parent"                    android:layout_height="43dip"                    android:text="忘记密码"                     android:textSize="18sp"                    android:gravity="center"                    android:textColor="#4876FF"/>            </LinearLayout>            <View                android:layout_width="fill_parent"                android:layout_height="1.0px"                android:background="@drawable/shape_line" />            <LinearLayout                android:id="@+id/benefit"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:gravity="center_vertical"                android:orientation="horizontal"                 android:background="@null">                <TextView                    android:id="@+id/btn_register"                    android:layout_width="fill_parent"                    android:layout_height="43dip"                    android:text="注册"                    android:gravity="center"                    android:textSize="18sp"                    android:textColor="#4876FF" />            </LinearLayout>            </LinearLayout>            <TextView                android:id="@+id/btn_cancel"                android:layout_width="fill_parent"                android:layout_height="43dip"                android:layout_marginBottom="8dip"                android:layout_marginTop="12dip"                android:background="@drawable/shape_bg"                android:text="取消"                 android:gravity="center"                android:textColor="#4876FF"                android:textSize="18sp"/>            </LinearLayout></RelativeLayout>
下面java文件ForgetActivity

package com.example.qqlogin;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;public class ForgetActivity extends Activity implements OnClickListener{private TextView btn_forget, btn_register, btn_cancel;          @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_forget);          btn_forget = (TextView) this.findViewById(R.id.btn_forget);          btn_register = (TextView) this.findViewById(R.id.btn_register);          btn_cancel = (TextView) this.findViewById(R.id.btn_cancel);                    //添加按钮监听            btn_cancel.setOnClickListener(this);        btn_register.setOnClickListener(this);          btn_forget.setOnClickListener(this);      }        @SuppressWarnings("deprecation")@Overridepublic void onClick(View v) {switch (v.getId()) {          case R.id.btn_forget:         btn_forget.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_bg_change));        startActivity(new Intent(ForgetActivity.this,MainActivity.class));            break;          case R.id.btn_register:        btn_register.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_bg_change));        startActivity(new Intent(ForgetActivity.this,MainActivity.class));             break;          case R.id.btn_cancel:         //销毁弹出框          btn_cancel.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_bg_change));        finish();            break;         default:              break;          }          finish();      }  }
此时,显示的半透明忘记密码部分却还是非透明的,同时,系统标题栏还在,我们要去掉标题栏,设置半透明背景

在Manifest中

<activity            android:name="com.example.qqlogin.MainActivity"            android:configChanges="locale|keyboardHidden|orientation"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"            android:windowSoftInputMode="adjustPan" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name="com.example.qqlogin.ForgetActivity"            android:label="@string/title_activity_forget_"            android:screenOrientation="portrait"            android:theme="@style/dialog" >        </activity>
在styles中设置style
<style name="dialog" parent="@android:style/Theme.Dialog">        <item name="android:windowIsFloating">true</item>        <!-- 设置未浮动窗口 -->        <item name="android:windowFrame">@null</item>        <!-- 设置无边框 -->        <item name="android:windowNoTitle">true</item>        <!-- 设置无标题 -->        <item name="android:windowBackground">@android:color/transparent</item>        <!-- 设置完全透明 -->        <item name="android:backgroundDimEnabled">true</item>        <!-- 是否模糊 -->        <item name="android:windowIsTranslucent">true</item>        <!-- 半透明 --> </style>   

源代码下载地址:http://download.csdn.net/detail/pmx_121212/7718027




0 0