今天同学问了关于仿QQ写说说界面的实现,个人感觉就是如同评论,回复的那种效果,按捺不住,就仿写了一回,大家不要见笑啊

首先,我们需要根据需求进行分析

这里我们看见刚进入的时候不显示键盘跟被键盘顶起的布局,当点击Editetxt时,弹出软键盘,顶起布局,那么是怎么实现的呢?

先将Activity设置属性

android:windowSoftInputMode="stateAlwaysHidden|adjustPan"

进入页面时,键盘始终不显示

windowSoftInputMode各值的含义:

【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
【C】stateHidden:用户选择activity时,软键盘总是被隐藏
【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【E】stateVisible:软键盘通常是可见的
【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

activity.mian.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"android:padding="8dp"tools:context="com.example.wangchang.testapply.MainActivity"><EditText
        android:id="@+id/etContent"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="说点什么吧..."android:paddingTop="8dp"android:background="@null"/><ImageView
        android:layout_width="96dp"android:layout_height="96dp"android:layout_marginTop="24dp"android:src="@drawable/ic_add_pic"/><View
        android:layout_width="match_parent"android:layout_height="1dp"android:background="#E0E0E0"/><RelativeLayout
        android:layout_width="match_parent"android:layout_height="48dp"android:gravity="center_vertical"><TextView
            android:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="地点"/><ImageView
            android:layout_width="18dp"android:layout_height="18dp"android:layout_alignParentRight="true"android:src="@drawable/ic_arrow_right" /></RelativeLayout><View
        android:id="@+id/line"android:layout_width="match_parent"android:layout_height="1dp"android:background="#E0E0E0"/></LinearLayout>

layout_popwindow.xml代码

<?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"><LinearLayout
        android:layout_width="match_parent"android:layout_height="48dp"android:gravity="center_vertical"android:orientation="horizontal"><ImageView
            android:layout_width="18dp"android:layout_height="18dp"android:layout_margin="8dp"android:src="@mipmap/ic_launcher" /><ImageView
            android:layout_width="18dp"android:layout_height="18dp"android:layout_margin="8dp"android:src="@mipmap/ic_launcher" /><ImageView
            android:layout_width="18dp"android:layout_height="18dp"android:layout_margin="8dp"android:src="@mipmap/ic_launcher" /></LinearLayout><View
        android:layout_width="match_parent"android:layout_height="1dp"android:background="#E0E0E0" />
</LinearLayout>

MainActivity代码

package com.example.wangchang.testapply;import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.PopupWindow;import java.util.logging.Handler;public class MainActivity extends AppCompatActivity {private EditText etContent;private View popupWindow;private PopupWindow mPopupWindow;private android.os.Handler mHandler = new android.os.Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etContent= (EditText) findViewById(R.id.etContent);popupWindow=getLayoutInflater().inflate(R.layout.layout_popwindow,new LinearLayout(this),false);mPopupWindow = new PopupWindow(popupWindow, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);mPopupWindow.setBackgroundDrawable(new BitmapDrawable());mPopupWindow.setTouchable(true);mPopupWindow.setOutsideTouchable(true);etContent.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mPopupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);mHandler.postDelayed(new Runnable() {@Overridepublic void run() {InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}}, 500);mPopupWindow.showAtLocation(MainActivity.this.findViewById(R.id.line), Gravity.BOTTOM, 0, 0);}});}
}

先看看效果吧

夜深了,不知不觉快一点了,嗯内容很简单,大家主要看功能就行了,代码我就不多讲了,睡觉!拜拜咯

仿QQ写说说效果的实现相关推荐

  1. android+qq底部界面,Android 高仿QQ 界面滑动效果

    Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...

  2. android取QQ昵称,Android仿QQ复制昵称效果

    背景: 这几天做一个复制文本的需求,突然看到QQ上复制昵称跟QQ号的效果,觉得很不错,就想要模仿一波,办法比较简单粗暴,反编译QQ获取了那个.9图片,然后就是用PopWindow实现了. 解决办法: ...

  3. android取QQ昵称,Android仿QQ复制昵称效果的实现方法

    背景: 在上一篇文章中,给出了一种复制QQ效果的方案,今天就来讲讲换一种方式实现.主要依赖的是一个开源项目https://github.com/shangmingchao/PopupList. 解决办 ...

  4. android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码...

    Android精选源码 一个可以上拉下滑的Ui效果,觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app ...

  5. android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码

    Android精选源码 一个可以上拉下滑的Ui效果,觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app ...

  6. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...

  7. 仿QQ写的chrome浏览器插件.

     在工作中,一直想看看浏览器是如何开发的,但是高手都是修改chrome的代码, 我有幸看了一点点, 我只是利用chrome的插件写了个类似的浏览器,在此分享,谢谢!其实纵观QQ浏览器.360浏览器.阿 ...

  8. Android仿QQ复制昵称效果2

    本文同步自http://javaexception.com/archives/77 背景: 在上一篇文章中,给出了一种复制QQ效果的方案,今天就来讲讲换一种方式实现.主要依赖的是一个开源项目https ...

  9. android自定义计步器形状,Android自定义View仿QQ运动步数效果

    本文实例为大家分享了Android QQ运动步数的具体代码,供大家参考,具体内容如下 今天我们实现下面这样的效果: 首先自定义属性: 自定义View代码如下: /** * Created by Mic ...

最新文章

  1. 详细的线程池讲解,手写C与C++版本
  2. jQuery可以查MySQL吗,我们可以在JQuery中执行SQL查询吗
  3. 图形颜色填充_Processing-2-基本图形绘制
  4. 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
  5. 联想一体机电源键不亮_联想/兄弟打印机复印一体机激光器清洁教程
  6. asp.net core策略授权
  7. IE与IE内核浏览器的那点事
  8. 一文理解图像处理之HOG特征
  9. TensorFlow COCO
  10. idft重建图像 matlab_不可见成为可见!超材料和 AI 融合,洛桑联邦理工破译了声音图像...
  11. 量化投资相关文章统计
  12. 实用教程详解:用OpenCV的DNN模块部署YOLOv5目标检测
  13. WEB服务器有哪几种
  14. con 元器件符号_关于元器件名称、符号和封装的命名问题
  15. ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)
  16. 获得KKR领投的2亿美元融资的公司,究竟随手记怎么样靠谱吗?
  17. win10删除.x文件的在“你要如何打开这个文件”的某个无效应用
  18. AWS 中的 Linux 堡垒主机
  19. github东西无法下载_下载GitHub上文件的两种方法
  20. 短视频直播源码 语音直播原生APP源码

热门文章

  1. swiper的动态观察者模式解决:swiper所在的页面先隐藏,后显示,swiper不自动播放了
  2. 期货分仓软件的功能界面
  3. Linux之重定向符号
  4. wps启用编辑按钮在哪里_如何在wps工具栏中添加按钮 如何在Excel中添加删除命令按钮...
  5. 贪婪算法小结(Java版)
  6. 如何制作点击输入框时默认文字消失的效果
  7. Command CompileAssetCatalog failed with a nonzero exit code
  8. Linux设备驱动程序——PCI相关知识的学习
  9. 命令行下开启与关闭windows防火墙关端口(转)
  10. 如何辨别ipad真假?如何鉴定ipad是否翻新?