手机qq表情表为什么变成上下滑动,怎么恢复成axure上下左右滑动动

Android OTA升级包制作脚本详解(解压缩)
第一步:解压缩(ota_from_target_files)
print &unzipping target target-files...&
OPTIONS.input_tmp, input_zip = common.UnzipTemp(args[0])
上面的代码是开始进行解压缩的入口
def UnzipTemp(filename, pattern=None):
&&&Unzip the given archive into a temporary directory and return the name.
If filename is of the form &foo.zip+bar.zip&, unzip foo.zip into a
temp dir, then unzip bar.zip into that_dir/BOOTABLE_IMAGES.
Returns (tempdir, zipobj) where zipobj is a zipfile.ZipFile (of the
main file), open for reading.
# 该函数用于创建一个临时文件夹,参数指的是临时文件夹的前缀,返回值tmp是临时文件夹的绝对路径,并赋给OPTIONS的tempfiles属性
tmp = tempfile.mkdtemp(prefix=&targetfiles-&)
OPTIONS.tempfiles.append(tmp)
def unzip_to_dir(filename, dirname):
#这里设置了一个变量名cmd的数组,里面存放的是需要执行的命令和参数,这个命令也就是&unzip -o -q filename -d dirname&
cmd = [&unzip&, &-o&, &-q&, filename, &-d&, dirname]
if pattern is not None:
cmd.append(pattern)
#这里调用了Run方法
p = Run(cmd, stdout=subprocess.PIPE)
&&&municate(input=None)与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。Communicate()返回一个元组:(stdoutdata,stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。&&&
p.communicate()
if p.returncode != 0:
raise ExternalError(&failed to unzip input target-files \&%s\&& %
(filename,))
#match :只从字符串的开始与正则表达式匹配,匹配成功返回所匹配的项,否则返回none;
m = re.match(r&^(.*[.]zip)\+(.*[.]zip)$&, filename, re.IGNORECASE)
#如果这里加上并执行&&&print m&&&语句的话,结果为&&&[target.zip]&&&
unzip_to_dir(m.group(1), tmp)
unzip_to_dir(m.group(2), os.path.join(tmp, &BOOTABLE_IMAGES&))
filename = m.group(1)
#这里执行解压操作,文件名的值为&target.zip&,tem的值为&/tmp/targetfiles-fEX9aH&,并且调用upzip_to_dir方法来执行解压缩命令
unzip_to_dir(filename, tmp)
#这里返回临时路径和存储了zipfile内容的变量
# 这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件
return tmp, zipfile.ZipFile(filename, &r&)
#这里开启新的进程来执行解压缩的命令
def Run(args, **kwargs):
&&&Create and return a subprocess.Popen object, printing the command
line on the terminal if -v was specified.&&&
if OPTIONS.verbose:
running: &, & &.join(args)
&&&这里调用Popen模块开启新的进程用来执行命令,这种方式可运用对进程的控制,将返回结果复制给变量,更方便去处理。args的值实际上是一个list,用于指定进程的可执行文件及其参数。&&&
return subprocess.Popen(args, **kwargs)
接着回到main函数中对解压缩返回的结果进行处理
OPTIONS.target_tmp = OPTIONS.input_tmp
_dict = common.LoadInfoDict(input_zip)
第二步,解析target.zip中META/misc_info.txt、imagesizes.txt中的信息,如下图:
这是misc_info.txt中的内容:
recovery_api_version=3
fstab_version=2
tool_extensions=out/target/product/wt98360/obj/CUSTGEN/config/../common
default_system_dev_certificate=build/target/product/security/testkey
mkbootimg_args=
use_set_metadata=1
update_rename_support=1
fs_type=ext4
system_size=
userdata_size=
cache_size=
extfs_sparse_flag=-s
mkyaffs2_extra_flags=-c 2048 -s 64
selinux_fc=out/target/product/wt98360/root/file_contexts
具体代码如下:
def LoadInfoDict(zip):
&&&Read and parse the META/misc_info.txt key/value pairs from the
input target files and return a dict.&&&
#定义一个字典变量用于存储处理后的信息
#这里zip.read()方法打开update.zip中的META/misc_info.txt,并按&\n&进行切片
for line in zip.read(&META/misc_info.txt&).split(&\n&):
line = line.strip()#用于移除字符串头尾指定的字符(默认为空格)
if not line or line.startswith(&#&): continue#跳过注释信息
k, v = line.split(&=&, 1)#这里按照第一个&=&进行切片
d[k] = v#封装成数据字典
except KeyError:
# ok if misc_info.txt doesn't exist
# backwards compatibility: These values used to be in their own
Look for them, in case we're processing an old
# target_files zip.
if &mkyaffs2_extra_flags& not in d:
d[&mkyaffs2_extra_flags&] = zip.read(&META/mkyaffs2-extra-flags.txt&).strip()
except KeyError:
# ok if flags don't exist
if &recovery_api_version& not in d:
d[&recovery_api_version&] = zip.read(&META/recovery-api-version.txt&).strip()
except KeyError:
raise ValueError(&can't find recovery API version in input target-files&)
if &tool_extensions& not in d:
d[&tool_extensions&] = zip.read(&META/tool-extensions.txt&).strip()
except KeyError:
# ok if extensions don't exist
if &fstab_version& not in d:
d[&fstab_version&] = &1&
data = zip.read(&META/imagesizes.txt&)
for line in data.split(&\n&):
if not line: continue
name, value = line.split(& &, 1)
if not value: continue
if name == &blocksize&:
d[name] = value
d[name + &_size&] = value
except KeyError:
def makeint(key):
if key in d:
if d[key].endswith('M'):
d[key] = d[key].split(&M&)[0]
d[key] = int(d[key], 0) * 1024 * 1024
d[key] = int(d[key], 0)
makeint(&recovery_api_version&)
makeint(&blocksize&)
makeint(&system_size&)
makeint(&userdata_size&)
makeint(&cache_size&)
makeint(&recovery_size&)
makeint(&boot_size&)
makeint(&fstab_version&)
makeint(&custom_size&)
d[&fstab&] = LoadRecoveryFSTab(zip, d[&fstab_version&])
d[&build.prop&] = LoadBuildProp(zip)
上面的代码中,在方法的末尾有分别去解析了分区表和Build属性,那么具体的操作流程,我们下面进行详细的分析
第三步,解析recovery分区信息
这里fastab_version的版本是2,因此
def LoadRecoveryFSTab(zip, fstab_version):
class Partition(object):
data = zip.read(&RECOVERY/RAMDISK/etc/recovery.fstab&)#当前target.zip中并没有这文件,因此这里暂不作详解
except KeyError:
print &Warning: could not find RECOVERY/RAMDISK/etc/recovery.fstab in %s.& % zip
if fstab_version == 1:
for line in data.split(&\n&):
line = line.strip()
if not line or line.startswith(&#&): continue
pieces = line.split()
if not (3 &= len(pieces) &= 4):
raise ValueError(&malformed recovery.fstab line: \&%s\&& % (line,))
p = Partition()
p.mount_point = pieces[0]
p.fs_type = pieces[1]
p.device = pieces[2]
p.length = 0
options = None
if len(pieces) &= 4:
if pieces[3].startswith(&/&):
p.device2 = pieces[3]
if len(pieces) &= 5:
options = pieces[4]
p.device2 = None
options = pieces[3]
p.device2 = None
if options:
options = options.split(&,&)
for i in options:
if i.startswith(&length=&):
p.length = int(i[7:])
print &%s: unknown option \&%s\&& % (p.mount_point, i)
d[p.mount_point] = p
elif fstab_version == 2:
for line in data.split(&\n&):
line = line.strip()
if not line or line.startswith(&#&): continue
pieces = line.split()
if len(pieces) != 5:
raise ValueError(&malformed recovery.fstab line: \&%s\&& % (line,))
# Ignore entries that are managed by vold
options = pieces[4]
if &voldmanaged=& in options: continue
# It's a good line, parse it
p = Partition()
p.device = pieces[0]
p.mount_point = pieces[1]
p.fs_type = pieces[2]
p.device2 = None
p.length = 0
options = options.split(&,&)
for i in options:
if i.startswith(&length=&):
p.length = int(i[7:])
# Ignore all unknown options in the unified fstab
d[p.mount_point] = p
raise ValueError(&Unknown fstab_version: \&%d\&& % (fstab_version,))
第四步,解析SYSTEM/build.prop属性信息,将解析的属性信息保存为一个数据字典,并返回
def LoadBuildProp(zip):
data = zip.read(&SYSTEM/build.prop&)
except KeyError:
print &Warning: could not find SYSTEM/build.prop in %s& % zip
for line in data.split(&\n&):
line = line.strip()
if not line or line.startswith(&#&): continue
name, value = line.split(&=&, 1)
d[name] = value
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'手机qq表情怎么变成竖直滑动的了,原本是左右滑动的_百度知道
手机qq表情怎么变成竖直滑动的了,原本是左右滑动的
提问者采纳
更新了所以这样
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
为您推荐:
其他3条回答
这是更新以后为了方便
嗯,我也不习惯,但是这是QQ的,不是我们自义定的
不能改回来吗
我的是横滑。。又更新了?
都差不多嘛
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁绿满瀟湘——创建国家森林城市进行曲
  永州日报社开辟了&绿满潇湘&&创建国家森林城市进行曲&专栏,密切关注各县区、各部门的工作动态,刊登了《零陵通道&播绿&美潇湘》、《宁远创森突出宣传先行》等30余篇有深度、有影响的创森稿件。永州电视台先后跟踪报道了中心城区开展绿化提质、通道绿化和&荒山披绿&等工作,进行了详尽的报道;永州新闻网除及时转载永州日报的相关稿件外,还采写原创稿件50余条。江华专门创建了独立的宣传网站开展创森宣传,扩大了创森宣传报道的影响力。新闻媒体还充分利用外出务工人员集中返乡的有利时机,开展创森宣传,激发了市民的主人翁意识,提升了大家的参与度。&UC浏览器看小说的时候,上下滑动屏幕,经常会误操作成左右滑动,怎么办?
求教一下&&看小说的时候,上下滑动屏幕,经常会误操作成左右滑动,怎么办?
有方法设置吗?&&头疼死了!谁来帮我一下
该帖共收到 15 条回复!
发表于 日 16:09
楼主是侧滑吧
发表于 日 16:12
内容有时会有时不会
发表于 日 16:14
<font color="#073362 发表于 日 16:09
楼主是侧滑吧
经常是向下滑 变成左右滑,这情况导致了这一页还没看完就返回上一页 或者下一页
发表于 日 16:15
发表于 日 16:16
陸銑鉎ゝ 发表于 日 16:14
经常是向下滑 变成左右滑,这情况导致了这一页还没看完就返回上一页 或者下一页
我的意思是楼主是不是为了顺手从屏幕右上滑到左下
发表于 日 16:35
<font color="#073362 发表于 日 16:16
我的意思是楼主是不是为了顺手从屏幕右上滑到左下
应该是吧。。算是误操作。。有方法禁止左右滑动吗
发表于 日 16:49
陸銑鉎ゝ 发表于 日 16:35
应该是吧。。算是误操作。。有方法禁止左右滑动吗
发表于 日 17:44
设置成点击屏幕翻页啊,不要用滑动
发表于 日 18:04
亲,还在用uc书架吗?你out啦!QQ浏览器看小说神器,书友必备
发表于 日 18:12
基本不会这样误操作。。。楼主是想说你手机很流畅还是uc很流畅???开玩笑
发表于 日 18:41
这个问题我8.0时代就已经开始反馈了
发表于 日 22:17
这个确定太灵敏了
发表于 日 23:38
很简单,换个浏览器就ok了,一年前我就反馈过这问题,不止一次
发表于 日 01:03
内容因为这个问题不用UC,刚好过来看看为什么微信上聊天界面上下滑动时动态表情是不动的,左右滑动却可以动?
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 ios view上下左右滑动 的文章

 

随机推荐