精华内容
下载资源
问答
  • 摘要:VB源码,网络相关,QQ协议 手机QQ协议VB 源码,利用手机QQ协议 登录QQ,可接收好友信息。作者QQ:871534346
  • 手机qq登录.rar

    2013-07-07 20:09:46
    手机qq登录.rar
  • Ameng手机QQ批量登录.rar
  • 易语言Ameng手机QQ批量登录源码,Ameng手机QQ批量登录,还原为字节集,取十进制,取验证码,登录,搜索客户,是否创建客户,删除已创建客户,置用户,连接,发送,标记,取指定内容,加入验证码,发送验证码
  • php 手机QQ协议登录源码
  • E卡安卓手机qq软件登陆可享受加速功能!无需安卓模拟器就可在电脑上登录手机QQ!安全,方便,快捷!可挂机使用!
  • 易语言Ameng手机QQ批量登录易语言源码.rar 易语言Ameng手机QQ批量登录易语言源码.rar 易语言Ameng手机QQ批量登录易语言源码.rar 易语言Ameng手机QQ批量登录易语言源码.rar 易语言Ameng手机QQ批量登录易语言源码....
  • Ameng手机QQ批量登录易语言源码
  • 该代码简洁明了,能够实现模拟手机QQ自动登录的功能,且有相应的注释,易于读者理解。
  • iPhone手机QQ登录2013

    2013-10-31 13:24:35
    一款很不错的电脑小软件,登录QQ将显示为iPhone手机在线,操作简单,绝对的神器!小伙伴们都惊呆了!
  • 手机QQ登录测试用例

    千次阅读 2019-10-03 17:57:31
    手机QQ登录测试用例: 什么都不输入,点击提交按钮,看提示信息。 输入正确的用户名和密码,点击提交按钮,验证能正确登录。 输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。 用户名输入5...

    手机QQ登录测试用例:

    1. 什么都不输入,点击提交按钮,看提示信息。
    2. 输入正确的用户名和密码,点击提交按钮,验证能正确登录。
    3. 输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。
    4. 用户名输入5位,提示请输入正确用户名长度
    5. 用户名输入11位,提示请输入正确用户名长度
    6. 用户名输入6位
    7. 用户名输入10位
    8. 用户名输入8位
    9. 记住用户名的功能
    10. 记住密码功能
    11. 密码输入5位,提示请输入正确密码长度
    12. 密码输入17位,提示请输入正确密码长度
    13. 密码输入6位
    14. 密码输入16位
    15. 密码输入11位
    16. 登陆失败后,不能记录密码的功能
    17. 用户名和密码前后有空格的处理
    18. 密码有加密显示
    19. 登录页面中的注册
    20. 忘记密码
    21. 输入密码的时候,大写键盘开启的时候要有提示信息。

    参考:(写至检查点)

    功能,性能,界面,易用,兼容,安全

    功能:

    正常,异常

    正常:

    切换用户登录

    密码规则符合:大小写

    删除登录历史

    二维码登录

    修改登录状态

    记住密码

    自动登录

     

     

    展开全文
  • 摘要:Java源码,Android源码,手机QQ,登录界面 这是一款精仿手机QQ登录界面,Android源码下载,Java写的代码,学习Android应用编程的时候写的仿Android手机QQ登录界面,想运行的请把代码拷贝到手机上运行,只需要...
  • 第三方登录,当web端和移动端数据需要进行同步的时候发现 同一个QQ,通过手机端第三方登录进去,和通过网站登录进去,因为openid不一样,会生成两个用户。 微信: 独有的 unionid机制, 用户唯一标识符,同个开发账号下...

    第三方登录,当web端和移动端数据需要进行同步的时候发现 同一个QQ,通过手机端第三方登录进去,和通过网站登录进去,因为openid不一样,会生成两个用户。

    微信: 独有的 unionid机制, 用户唯一标识符,同个开发账号下的应用 有个unionid是一样的
    微博:更简单, web + 移动统统使用 uid做为用户唯一标识
    QQ : 创建的web端应用产生一个 APP ID 以及一个 APP KEY 创建移动应用的时候依然会产生一个新的APP ID 和 APP KEY 此时,使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样 openid生成是根据应用的appid和QQ号的一些信息加密生成,对于一个appid和QQ号来说,openid是唯一的 .
    手机应用和网站应用使用的appid不是同一个,所以,获取到的openid也不会相同

    那么问题来了
    同一个QQ,通过手机端第三方登录进去,和通过网站登录进去,因为openid不一样,会生成两个用户,
    客服说 发邮件申请绑定,但是只能是用一个开发账号下的一个网站应用和一个移动应用(多个就不行略坑!)

    解决方法:
    给connect@qq.com发送邮件,内容格式:
    
    第三方登录,web端返回的openid和手机端返回的openid不一致, 现申请两个appid合并
    
    移动应用:
    appid:aabbbcccccc
    appkey:aaaaaa
    
    网站应用:
    appid:bbbbbbb
    appkey:ddddddddd
    然后我这边是1201分发送的邮件, 回复来的时候是 14:48分。  可能每个人的回复情况不一样吧,下面这张图是回复内容。根据内容走就可以了,打通下appid,指定个主要的appId就可以了。

    回复内容

    今天又看了下这个问题, 出现这个问题的原因是 在刚刚创建移动应用的时候,忘记点击关联QQ互联,前提是网站端已经存在一个应用,直接关联APPID 和APPKEY就行了。 一定不要忘记关联QQ互联!一定不要忘记关联QQ互联!一定不要忘记关联QQ互联!重要的事情说三遍, 阿西吧,犯了个愚蠢而又低级的错误。。。上面的情况是在你忘记关联的情况下,已经提交上线,可以采取上面打通的方式来解决。打通以后,代码什么的都不需要修改了,用的就是你设置的主APP ID,下面是截图


    回复

    哈哈。 就先到这吧。我今天刚刚创建了新的应用并关联以及修改了项目重新提交了个版本,但是之前通过审核的版本也可以正常使用了。新的和打通以后的都是一样的,用的网站应用的APPID 和 APPKEY



    文/花前月下(简书作者)
    原文链接:http://www.jianshu.com/p/5775fcead59b
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • 安卓手机QQ登录易语言源码 可接收好友信息 对指定好友发送信息 可接收群信息 可获取附近的人的QQ号码
  • C#手机QQ登录收发信息实现
  • 本源码可实现多用户批量在线,加以修改即可开发成为多用户手机QQ机器人,具体靠你们的思路了本源码只提供批量登录思路 创建多个客户端登录,验证码的处理 以及事件转移的应用等。手机QQ协议 需要不断发送数据到服务器 ...
  • 模拟手机QQ登录和主界面显示;主要包含手机QQ登录界面的设计、Intent的显式跳转和隐式跳转、EditText点击小图标清除输入框内容、EditText密码输入框中密码可见与不可见的切换、使用Fragment实现底部导航栏切换界面、...
  • 手机QQ登录界面的简单实现,借助eclipse平台进行开发。
  • 摘要:C#源码,网络相关,网络聊天,仿QQ C#手机qq登录收发信息的一个实例,基于C#编写的C__MiniQQ程序源码,可以聊天。但没有QQ的功能强大,只是模拟,通过这个程序可学到不少的网络知识。程序运行截图如上所示。
  • Ameng 手机QQ批量登录.e

    2013-10-09 17:29:06
    qq可以手机在线,且能批量登陆,方便快捷,3G登陆不占电脑内存
  • 动态爬虫之手机QQ空间登录

    千次阅读 2019-03-04 15:34:03
    准备: 1、intellij idea ...动态爬虫之手机QQ空间登录 按照上面流程复制账号、密码和登录按钮的的XPath粘贴到记事本中 2、超链 1、构建浏览器并且设置请求头2、开始请求3、模仿用户输入4、输...

    准备:

    1、intellij idea
    2、python
    3、selenium
    4、phantomJs

    1、分析Qzone Html页面

    打开手机版qzone https://mobile.qzone.qq.com

    动态爬虫之手机版QQ空间登录

    按照上面流程复制账号、密码和登录按钮的的XPath粘贴到记事本中

    2、超链

    1、构建浏览器并且设置请求头
    2、开始请求
    3、模仿用户输入
    4、输入验证码
    5、自动登录
    6、完整代码

    3、编写爬虫代码

    首先创建一个浏览器对象和设置请求头

    # 导入驱动包
    from selenium import webdriver
    from selenium.webdriver import DesiredCapabilities
    class qzone_dlewares(object):
        # 浏览器请求头
        headers = {'Accept': '*/*',
                   'Accept-Language': 'en-US,en;q=0.8',
                   'Cache-Control': 'max-age=0',
                   'User-Agent': 'Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255',
                   'Connection': 'keep-alive', }
        
        #初始化浏览器
        def __init__(self,userName='' ,password = '', *args, **kwargs):
            self.userName = userName
            self.password = password
            desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
            for key, value in self.headers.items():
                desired_capabilities['phantomjs.page.customHeaders.{}'.format(key)] = value
            self.driver = webdriver.PhantomJS(desired_capabilities=desired_capabilities)
            # 设置屏幕大小
            self.driver.set_window_size(414, 736)

    开始请求 截图

    def startQzoneRequest(self):
        #开始请求qzone
        self.driver.get('https://mobile.qzone.qq.com')
        #截图保存到当前项目下
        self.driver.save_screenshot('screenshot.png')
    

    截图成功会在 project 下面生成screenshot.png

    模仿用户输入 登录关键性代码

    import time
    from selenium.webdriver import ActionChains
        def loginQzone(self):
            u = self.driver.find_element_by_xpath('//*[@id="u"]')
            p = self.driver.find_element_by_xpath('//*[@id="p"]')
            go = self.driver.find_element_by_xpath('//*[@id="go"]')
            
            # 移动到账号框模仿键盘输入账号
            action = ActionChains(self.driver)
            action.move_to_element(u)
            action.click(u)
            # 模仿键盘输入账号
            action.send_keys(self.userName)
            
            # 移动到密码输入框
            action.move_to_element(p)
            action.click(p)
            # 模仿键盘输入密码
            action.send_keys(self.password)
            
            # 点击登录
            action.move_by_offset(go.location['x'], go.location['y'])
            action.click(go)
            
            # 执行登录
            action.perform()
            # 休息1秒保证能执行
            time.sleep(1)
            # 截图保存到当前项目下
            self.driver.save_screenshot('screenshotLoginQzone.png')
    

    登录代码就写完了现在开始写个测试代码

    
    if __name__ == '__main__':
            # 事先输入账号和密码
            userName = input("账号:")
            password = input("密码:")
            oldTime = time.time()
            browser = qzone_dlewares(userName=userName, password=password)
            initTime = time.time()
            # 打开浏览器并且截图
            browser.startQzoneRequest()
            requestTime = time.time()
            # 模仿用户登录
            browser.loginQzone()
            currentTime = time.time()
        
            print('开始时间 %f' % oldTime)
            print('结束时间 %f' % currentTime)
            print('初始化时间 %f' % (initTime - oldTime))
            print('加载页面时间 %f'%(requestTime - initTime))
            print('模仿操作时间 %f' %(currentTime - requestTime))
            print('总运行时间 %f' % (currentTime - oldTime))

    运行测试结果

    运行几遍后发现每次都要登录一遍,然后腾讯验证码也出来了。。。
    先把验证码这块给处理了

    按照开始寻找图片的方法把验证码图片、验证码输入框、按钮找出来

    from selenium.webdriver import ActionChains
    def check_code(self):
        que_code = self.driver.find_element_by_xpath('//*[@id="cap_que_img"]')
        que_input = self.driver.find_element_by_xpath('//*[@id="cap_input"]')
        que_but = self.driver.find_element_by_xpath('//*[@id="verify_btn"]')
        
        #保存验证码
        self.save_verify_code(que_code)
        #输入验证码
        input_verify_code = input("验证码:")
        #模仿用户输入
        action = ActionChains(self.driver)
        action.move_to_element(que_input)
        action.click()
        action.send_keys(input())
        action.move_to_element(que_but)
        action.click()
        #执行
        action.perform()

    保存验证码

    import urllib
    def save_verify_code(self,element):
        url = element.get_attribute('src')
        fileName = element.get_attribute('id') + '.jpg'
        urllib.request.urlretrieve(url, fileName)
    

    运行测试,发现以下错误

    Traceback (most recent call last):
      File “C:/Users/user/IdeaProjects/untitled/untitled/qzone.py”, line 108, in 
         browser.check_code2()
      File “C:/Users/user/IdeaProjects/untitled/untitled/qzone.py”, line 67, in check_code2
         que_code = self.driver.find_element_by_xpath(‘//[@id=”cap_que_img”]’)
      File “D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 313, in find_element_by_xpath
         return self.find_element(by=By.XPATH, value=xpath)
      File “D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 791, in find_element
         ’value’: value})[‘value’]
      File “D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 256, in execute
         self.error_handler.check_response(response)
      File “D:\python\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 194, in check_response
         raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: {“errorMessage”:”Unable to find element with xpath ‘//[@id=\”cap_que_img\”]’”,”request”:{“headers”:{“Accept”:”application/json”,”Accept-Encoding”:”identity”,”Connection”:”close”,”Content-Length”:”108”,”Content-Type”:”application/json;charset=UTF-8”,”Host”:”127.0.0.1:53613”,”User-Agent”:”Python http auth”},”httpVersion”:”1.1”,”method”:”POST”,”post”:”{\”using\”: \”xpath\”, \”value\”: \”//*[@id=\\”cap_que_img\\”]\”, \”sessionId\”: \”737e6b90-6929-11e7-8958-3b746283f061\”}”,”url”:”/element”,”urlParsed”:{“anchor”:””,”query”:””,”file”:”element”,”directory”:”/“,”path”:”/element”,”relative”:”/element”,”port”:””,”host”:””,”password”:””,”user”:””,”userInfo”:””,”authority”:””,”protocol”:””,”source”:”/element”,”queryKey”:{},”chunks”:[“element”]},”urlOriginal”:”/session/737e6b90-6929-11e7-8958-3b746283f061/element”}}
    Screenshot: available via screen

    说没有找到这个节点,后来分析源码发现他是包在 iframe 中的 既然包在里面了那我们切换窗口好了

    # 校验码
    from selenium.common.exceptions import NoSuchElementException
    def check_code(self):
        # 先切换到默认的窗口
        self.driver.switch_to.default_content()
        iframe = None
        try:
            # 验证码
            iframe = self.driver.find_element_by_xpath('//*[@id="new_vcode"]/iframe[2]')
        except NoSuchElementException:
            print('无需输入验证码')
        else:
            self.driver.switch_to.frame(iframe)
            self.verify_code()

    手动输入验证码,暂时还不能自动输入验证码 并且也不能验证验证码是否错误或者切换

    # 验证码
    def verify_code(self):
        que_code = self.driver.find_element_by_xpath('//*[@id="cap_que_img"]')
        que_input = self.driver.find_element_by_xpath('//*[@id="cap_input"]')
        que_but = self.driver.find_element_by_xpath('//*[@id="verify_btn"]')
        # 保存验证码
        self.save_verify_code(que_code)
        verify_path = que_code.get_attribute('id') + '.jpg'
        # 输入验证码
        if (self.isWindows()):
            os.startfile(verify_path)
        else:
            os.subprocess.call(["xdg-open", verify_path])
        input_verify_code = input("验证码:")
        # 模仿用户输入
        action = ActionChains(self.driver)
        action.move_to_element(que_input)
        action.click()
        action.send_keys(input_verify_code)
        action.move_to_element(que_but)
        action.click()
        # 执行
        action.perform()

    完美运行登录成功

    每次运行都需要手动登录太麻烦了 qzone 保存cookies 好像可以不需要手动登录了

    # 保存登录 cookies
        def save_cookies(self):
            with open(self.hashCode(), 'wb') as f:
                obj = self.driver.get_cookies()
                pickle.dump(obj, f)
                f.close()
        # 读取并设置 cookies
        def load_cookies(self):
            fileName = self.hashCode()
            # 判断文件是否存在
            if self.file_exists(fileName):
                f = open(fileName, 'rb')
                obj = pickle.load(file=f)
                f.close()
                # 循环设置 cookie
                try:
                    for cookie in obj:
                        self.driver.add_cookie(cookie)
                except Exception as e:
                    print(e)
        # hasCode
        def hashCode(self):
            sha = sha1()
            sha.update(b'qzone_cookies')
            return sha.hexdigest()
            # 判断文件是否存在
        def file_exists(self, filename):
            try:
                with open(filename) as f:
                    return True
            except IOError:
                return False

    测试代码

    if __name__ == '__main__':
        # 事先输入账号和密码
        userName = input("账号:")
        password = input("密码:")
        oldTime = time.time()
        browser = qzone_dlewares(userName=userName, password=password)
        # 加载cookies
        browser.load_cookies()
        initTime = time.time()
        # 打开浏览器并且截图
        browser.startQzoneRequest()
        requestTime = time.time()
        # 判断是否登录
        if (not browser.isLogin()):
            # 模仿用户登录
            browser.loginQzone()
            # 检查code
            browser.check_code()
        currentTime = time.time()
        
        # 解析动态
        browser.paresHtml()
        # 运行完成后再截图一次
        browser.driver.save_screenshot('screenshotLoginQzoneSuccess.png')
        # 保存cookies
        browser.save_cookies()
        print('开始时间 %f' % oldTime)
        print('结束时间 %f' % currentTime)
        print('初始化时间 %f' % (initTime - oldTime))
        print('加载页面时间 %f' % (requestTime - initTime))
        print('模仿操作时间 %f' % (currentTime - requestTime))
        print('总运行时间 %f' % (currentTime - oldTime))

    QZONE 登录自动登录完整代码

    import json
    import os
    import pickle
    import platform
    import time
    import urllib
    from _sha1 import sha1
    from selenium import webdriver
    from selenium.common.exceptions import NoSuchElementException
    from selenium.webdriver import DesiredCapabilities, ActionChains
    class qzone_dlewares(object):
        # 浏览器请求头
        headers = {'Accept': '*/*',
                   'Accept-Language': 'en-US,en;q=0.8',
                   'Cache-Control': 'max-age=0',
                   'User-Agent': 'Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255',
                   'Connection': 'keep-alive', }
        # 初始化浏览器
        def __init__(self, userName='', password='', *args, **kwargs):
            self.userName = userName
            self.password = password
            desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
            for key, value in self.headers.items():
                desired_capabilities['phantomjs.page.customHeaders.{}'.format(key)] = value
            # 禁止加载图片
            desired_capabilities["phantomjs.page.settings.loadImages"] = False
            self.driver = webdriver.PhantomJS(desired_capabilities=desired_capabilities)
            # 设置屏幕大小
            self.driver.set_window_size(414, 736)
        # 开始请求并且截图
        def startQzoneRequest(self):
            # 开始请求qzone
            self.driver.get('https://mobile.qzone.qq.com')
            # 截图保存到当前项目下
            self.driver.save_screenshot('screenshot.png')
        # 判断是否登录了
        def isLogin(self):
            try:
                u = self.driver.find_element_by_xpath('//*[@id="u"]')
                p = self.driver.find_element_by_xpath('//*[@id="p"]')
                go = self.driver.find_element_by_xpath('//*[@id="go"]')
            except NoSuchElementException:
                return True
            return False
        def loginQzone(self):
            u = self.driver.find_element_by_xpath('//*[@id="u"]')
            p = self.driver.find_element_by_xpath('//*[@id="p"]')
            go = self.driver.find_element_by_xpath('//*[@id="go"]')
            # 清理账号和密码
            u.clear()
            p.click()
            # 移动到账号框模仿键盘输入账号
            action = ActionChains(self.driver)
            action.move_to_element(u)
            action.click(u)
            # 模仿键盘输入账号
            action.send_keys(self.userName)
            # 移动到密码输入框
            action.move_to_element(p)
            action.click(p)
            # 模仿键盘输入密码
            action.send_keys(self.password)
            # 点击登录
            action.move_by_offset(go.location['x'], go.location['y'])
            action.click(go)
            # 执行登录
            action.perform()
            # 休息1秒保证能执行
            time.sleep(1)
            # 截图保存到当前项目下
            self.driver.save_screenshot('screenshotLoginQzone.png')
        def save_verify_code(self, element):
            url = element.get_attribute('src')
            fileName = element.get_attribute('id') + '.jpg'
            urllib.request.urlretrieve(url, fileName)
        # 校验码
        def check_code(self):
            # 先切换到默认的窗口
            self.driver.switch_to.default_content()
            iframe = None
            try:
                # 验证码
                iframe = self.driver.find_element_by_xpath('//*[@id="new_vcode"]/iframe[2]')
            except NoSuchElementException:
                print('无需输入验证码')
            else:
                self.driver.switch_to.frame(iframe)
                self.verify_code()
        # 验证码
        def verify_code(self):
            que_code = self.driver.find_element_by_xpath('//*[@id="cap_que_img"]')
            que_input = self.driver.find_element_by_xpath('//*[@id="cap_input"]')
            que_but = self.driver.find_element_by_xpath('//*[@id="verify_btn"]')
            # 保存验证码
            self.save_verify_code(que_code)
            verify_path = que_code.get_attribute('id') + '.jpg'
            # 输入验证码
            if (self.isWindows()):
                os.startfile(verify_path)
            else:
                os.subprocess.call(["xdg-open", verify_path])
            input_verify_code = input("验证码:")
            # 模仿用户输入
            action = ActionChains(self.driver)
            action.move_to_element(que_input)
            action.click()
            action.send_keys(input_verify_code)
            action.move_to_element(que_but)
            action.click()
            # 执行
            action.perform()
        # 解析动态
        def paresHtml(self):
            pass
        # 是 windows 系统
        def isWindows(self):
            sysstr = platform.system()
            if (sysstr == "Windows"):
                return True
            return False
        # 保存登录 cookies
        def save_cookies(self):
            with open(self.hashCode(), 'wb') as f:
                obj = self.driver.get_cookies()
                pickle.dump(obj, f)
                f.close()
        # 读取并设置 cookies
        def load_cookies(self):
            fileName = self.hashCode()
            # 判断文件是否存在
            if self.file_exists(fileName):
                f = open(fileName, 'rb')
                obj = pickle.load(file=f)
                f.close()
                # 循环设置 cookie
                try:
                    for cookie in obj:
                        self.driver.add_cookie(cookie)
                except Exception as e:
                    print(e)
        # hasCode
        def hashCode(self):
            sha = sha1()
            sha.update(b'qzone_cookies')
            return sha.hexdigest()
            # 判断文件是否存在
        def file_exists(self, filename):
            try:
                with open(filename) as f:
                    return True
            except IOError:
                return False
        # 退出浏览器
        def __del__(self):
            self.driver.quit()
    if __name__ == '__main__':
        # 事先输入账号和密码
        userName = input("账号:")# 
        password = input("密码:")# 
        oldTime = time.time()
        browser = qzone_dlewares(userName=userName, password=password)
        # 加载cookies
        browser.load_cookies()
        initTime = time.time()
        # 打开浏览器并且截图
        browser.startQzoneRequest()
        requestTime = time.time()
        # 判断是否登录
        if (not browser.isLogin()):
            # 模仿用户登录
            browser.loginQzone()
            # 检查code
            browser.check_code()
        currentTime = time.time()
        
        # 解析动态
        browser.paresHtml()
        # 运行完成后再截图一次
        browser.driver.save_screenshot('screenshotLoginQzoneSuccess.png')
        # 保存cookies
        browser.save_cookies()
        print('开始时间 %f' % oldTime)
        print('结束时间 %f' % currentTime)
        print('初始化时间 %f' % (initTime - oldTime))
        print('加载页面时间 %f' % (requestTime - initTime))
        print('模仿操作时间 %f' % (currentTime - requestTime))
        print('总运行时间 %f' % (currentTime - oldTime))

    总结

    1、QQ空间登录其实可用使用js来模仿用户操作直接输入代码量也很少
    2、然后这边也有一个写入cookies 的bug因为作用域不对会报错

    我只是一只小菜鸟,如果你看到代码有错误的地方请提出来。对qq好友获取感兴趣的可以看看:qq好友列表获取

    展开全文
  •  用过QQ的人都知道,首次进入登录页面,输入框会从某个位置垂直向上偏移,达到一定的偏移量就停下来了,我现在迫不及待的想实现这样一个效果,因为这个效果给我的第一印象特别深!!! 导航到谷歌官方文档 Move ...

    这世界要是没有爱情,它在我们心中还会有什么意义!这就如一盏没有亮光的走马灯。—— 歌德

              最近加班太厉害了,没有时间写博客了。一到国庆又因为遇到了几位值得去结交的大哥又开始happy起来了,这种混日子不是办法呀。。。。。记得前不久,经常和UI的小姑娘吵架,老是说我界面不按照她的要求来做。说实话UI界面是一个App的灵魂,就好比一个人的外表,长得好看就得靠脸吃饭呀,APP看起来美观自然会增加用户对App的好评哟。

            UI小姐姐也设计了和QQ界面差不多的界面,虽然很多地方不同,我还是拿QQ界面说事吧,毕竟QQ才是很有代表性的,用了这么多年的QQ呀。 

    布局:

    布局需要考虑布局的性能(不能嵌套层数过多,不能重复绘制布局背景),布局是否能适配多种手机(在不同手机上进行等比例的缩放控件的宽与高):

    ① 首选谷歌官网推荐的约束布局ConstraintLayout

    ② 绘制边框工具 http://shapes.softartstudio.com/

    ③ 动画 Move a View with Animation

    ① 顶部图标控件和文本、②③背景|图标:



     

    圆角背景:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <corners
            android:bottomLeftRadius="@dimen/all_bg_radius"
            android:bottomRightRadius="@dimen/all_bg_radius"
            android:topLeftRadius="@dimen/all_bg_radius"
            android:topRightRadius="@dimen/all_bg_radius"></corners>
    
        <stroke
            android:width="@dimen/all_bg_stroke_width"
            android:color="@color/activity_register_cl_phone_bg"></stroke>
        <solid android:color="@color/activity_register_cl_phone_bg"></solid>
    </shape>

     

           用过QQ的人都知道,首次进入登录页面,输入框会从某个位置垂直向上偏移,达到一定的偏移量就停下来了,我现在迫不及待的想实现这样一个效果,因为这个效果给我的第一印象特别深!!!

    导航到谷歌官方文档Move a View with Animation,全局搜索:Move a View with Animation

     Objects on screen will often need to be repositioned. This can occur due to user interaction or some processing done behind the scenes. Instead of immediately updating the objects position, which would cause it to blink from one area to another, you should use an animation to move it from the starting position to its end position.

      视图需要重新确定位置。可能存在用户界面操作或后台进程场景。不是很快就更新视图的位置,从一个区域瞬间到另一个区域,您应该使用动画将它从起始位置移动到结束位置。

    上面的意思就是:动画为了带了更好的用户体验,在移动的过程中通过动画重新确定了位置,如果太快一瞬间用户体验很差。

    Android provides ways that allow you to reposition your view objects on screen, such as the ObjectAnimator. You can provide the end position you want the object to settle on, as well as the duration of the animation. You can combine this with time interpolators to control the acceleration or decceleration of the animation.

    谷歌官方提供了一种确定你视图位置的方式,如objectAnimator。你可以提供视图视图最终停留的位置,以及动画持续的时间。你可以结合时间控制器去控制视图动画的加速或减速。

    看过视频后,我们会明白是实现向上移动的动画,最终的位置就是布局时的初始位置:

    ① 需要获取视图的初始位置view.getY()   Float

    ② 设置开始滚动的坐标位置view.getY()+任意值  Float

    public class TestLoginActivity extends AppCompatActivity {
    
        ConstraintLayout mClMiddlePhonePwd;
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            mClMiddlePhonePwd=findViewById(R.id.clMiddlePhonePwd);
            float clMiddlePhowPwdY=mClMiddlePhonePwd.getY();
            //propertyNme: "translationY" 或者 "translationX"
            ObjectAnimator animation = ObjectAnimator.ofFloat(mClMiddlePhonePwd, "translationY", clMiddlePhowPwdY+300,clMiddlePhowPwdY);
            animation.setDuration(3000);
            animation.start();
            //System.out.println("_"+mClMiddlePhonePwd.getX()+"_"+mClMiddlePhonePwd.getPivotX()+"_"+mClMiddlePhonePwd.getRotationX());
        }
    
    }

    总结:约束布局可以很好的根据屏幕的来设置控件的百分比以及位置的偏移量,布局更加的方便灵活。

     

    展开全文
  • 摘要:VB源码,网络相关,手机QQ 本程序是根据手机QQ协议连接登录,接收信息有提示。网络虽然很多这种协议的QQ登录源码,但很作者都遗忘了一点:接收信息。在代码前:添加:  Option Explicit  Private Declare ...
  • 手机QQ邮箱登录不上的解决办法

    万次阅读 2017-11-05 23:50:35
    手机登录QQ邮箱登录不上报,IMAP服务关闭或用户名密码错误。  首先检查自己用户名和密码有没有输入错误,若没有请接着往下看。  这是QQ邮箱有的一种服务没开,这个需要用网页登录QQ邮箱,然后在邮箱的 设置->账户...
  • 易语言源码Ameng手机批量登录易语言源码.rar

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,246
精华内容 898
关键字:

qq手机登录