草庐IT

android - 强制布局刷新/重绘android?

coder 2023-11-28 原文

我想改变布局的位置并在 75 毫秒后将其返回到第一个位置进行移动,这就是我的代码:

for(int i = 0; i < l1.getChildCount(); i++) {  
    linear = (LinearLayout) findViewById(l1.getChildAt(i).getId());  
    LayoutParams params = new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);  
    params.bottomMargin = 10;  
    linear.setLayoutParams(params);  
    SystemClock.sleep(75);
}   

问题是应用程序停止了 750 毫秒并且没有做任何事情。我尝试了 invalidate()refreshDrawableState()requestLayout()postInvalidate(),并尝试调用onResume()onRestart()onPause()

最佳答案

也许你需要:

linear.invalidate();
linear.requestLayout();

在进行布局更改之后。

编辑:

在不同的线程上运行代码:

new Thread() {
    @Override
    public void run() {
        <your code here>
    }
}.start();

每当您需要从该线程更新 UI 时,请使用:

activity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        <code to change UI>
    }
});

关于android - 强制布局刷新/重绘android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470753/

有关android - 强制布局刷新/重绘android?的更多相关文章

  1. ruby - nanoc 和多种布局 - 2

    是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

  4. ruby - 强制 Ruby 不以标准形式/科学记数法/指数记数法输出 float - 2

    我遇到了同样的问题here对于python,但对于ruby​​。我需要输出这样一个小数字:0.00001,而不是1e-5。有关我的特定问题的更多信息,我正在使用f.write("Mynumber:"+small_number.to_s+"\n")输出到一个文件对于我的问题,准确性不是什么大问题,所以只做一个if语句来检查是否small_number那么更通用的方法是什么? 最佳答案 f.printf"Mynumber:%.5f\n",small_number您可以将.5(小数点右侧5位数字)替换为您喜欢的任何特定格式大小,例如,%8

  5. ruby-on-rails - 如何在 Rails 脚手架生成器上强制使用单数表名? - 2

    我正在使用遗留数据库并需要创建一些CRUD。我如何使用scaffold生成器并告诉他表的确切名称以避免复数化过程?表格也是西类牙语。 最佳答案 您可以只使用ActiveRecord::Base.table_name=方法手动设置表名。因此,在您的模型中您可以:classOrderDetail 关于ruby-on-rails-如何在Rails脚手架生成器上强制使用单数表名?,我们在StackOverflow上找到一个类似的问题: https://stackove

  6. ruby - 强制使用特定的 gem 版本作为默认版本? - 2

    假设我安装了三个gem:package-0.4.0、package-0.5.0和package-0.5.0-jbfink(我构建了-jbfink一个,因为我对0.5做了非常小的改动.0的来源,并希望将其与官方版本区分开来)。是否有gem(或其他命令)将其设为默认值?现在我已经安装了所有三个,但我的shell正在从package-0.5.0中获取可执行文件,我宁愿它默认为0.5.0-jbfink。将0.5.0-jbfink命名为0.5.1解决了这个问题,但我不想这样做,因为我不想与正式发布的0.5.1出现冲突。 最佳答案 转到conf

  7. ruby - 无法将 BigDecimal 强制转换为 BigDecimal - 2

    这应该很简单,但它正在爆炸。有什么想法吗?d=BigDecimal.new("2.0")YAML::load({:a=>d}.to_yaml)TypeError:BigDecimalcan'tbecoercedintoBigDecimalfrom/Users/benjohnson/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/inspector.rb:86:in`inspect'from/Users/benjohnson/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/inspector.rb

  8. ruby - 如何强制 Rack :session + sinatra to read "rack.session" from params instead of cookies - 2

    我正在处理oauth1.0(twitter和flickr)。网站工作在80端口,oauth服务器工作在8080端口算法:向oauth服务器发送ajax请求以检查用户是否有有效的access_token如果用户没有access_token或access_token已过期,则打开授权窗口在oauth服务器的用户session中保存access_token发送分享数据到oauth服务器它使用sinatra+rack:session+rack::session::sequel+sqlite来存储session。它在每个响应中发送Set-Cookie:rack.session=id我正在使用2种

  9. ruby - 如何强制 Ruby 释放内存给操作系统 - 2

    正如标题,我有一个处理大量数据的ruby​​程序。该程序占用了所有内存,其中调用了系统命令hostname,并且发生错误无法分配内存-主机名我试过GC.start但它不起作用。那么如何强制ruby释放未使用的内存呢?OK,这是别人的测试代码,最后报错是big_var被回收了。但是内存仍然没有释放。require"weakref"defreportputs"#{param}:\t\tMemory"+`psax-opid,rss|grep-E"^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)[1].to_s+'KB'endbig_var=""#big

  10. ruby - 有没有办法将 html 刷新到 Sinatra 中的线路 - 2

    我有一个Sinatra应用程序,它有一个长时间运行的进程(网络抓取工具)。我希望应用程序在爬虫运行时而不是在结束时刷新爬虫进度的结果。我已经考虑过fork请求并使用ajax做一些有趣的事情,但这是一个非常基本的单页应用程序,实际上只需要在它发生时将日志输出到浏览器。有什么建议吗? 最佳答案 更新(2012-03-21)从Sinatra1.3.0开始,您可以使用新的流式API:get'/'dostreamdo|out|out旧答案不幸的是,您没有可以简单地刷新到的流(这不适用于Rack中间件)。从路由block返回的结果可以简单地响应

随机推荐