仿qq登录界面(包括下拉删除以及半透明忘记密码)
来源:互联网 发布:seo sem是什么意思 编辑:程序博客网 时间:2024/04/29 13:44
首先,我们创建基本的登陆界面,包括输入框、头像,效果如下图:
以下是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
- 仿qq登录界面(包括下拉删除以及半透明忘记密码)
- 仿qq登录界面
- 高仿QQ(登录界面)
- android仿QQ登录界面
- 循序渐进实现仿QQ界面(五):半透明窗体与不透明控件
- 循序渐进实现仿QQ界面(五):半透明窗体与不透明控件
- vc循序渐进实现仿QQ界面(五):半透明窗体与不透明控件
- 盒子模型作业(仿QQ登录界面)
- 仿qq邮箱登录界面(html+css)
- android仿qq登录出现下拉框
- android 模仿qq登录界面EditText下拉框记住账号和密码 editText+popupwindow+sqlite方式实现(附源码)
- wxPython实现仿QQ登录界面
- 仿QQ登录界面的QComboBox
- react-native仿qq登录界面布局
- 仿QQ记住密码,自动登录
- ubuntu忘记登录账户以及密码
- Android实现仿QQ登录可编辑下拉菜单
- Android实现仿QQ登录可编辑下拉菜单
- fflush(stdin)的对错?
- C语言学习与指南
- 升级debian stable(wheezy)的iceweasel(firefox).
- 英语外教哪家好
- WPF 图形绘制 及各种线帽、箭头的实现
- 仿qq登录界面(包括下拉删除以及半透明忘记密码)
- ios6.1 和iOS7.1 IOS8的导航条试图frame
- linux下tar解压含有特殊符号的文件
- 最佳阈值获取方式
- poj1521
- 待字闺中之正数数组内和为指定数字的总数
- Android线程池
- hadoop的linux配置
- LINGO自学笔记