我正在阅读这篇文章:http://developer.android.com/guide/practices/screens_support.html
它说Android用于在dp单位到px单位之间转换的公式如下:
px = dp * (dpi / 160)
Run Code Online (Sandbox Code Playgroud)
文章还给出了一个例子,当dpi为240时,它给出了px = 1.5(我正在计算单个dp像素)
但是,1.5究竟是什么意思呢?一旦px单位实际上是物理设备像素,Android会绘制1或2像素吗?
我有两个视图,A和B,视图A在视图B上方(都是线性布局).
当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图(B)将转到视图A的位置(如预期的那样).
但是,当我再次将相同的视图(A)设置为VISIBLE时,它将显示在视图B上.我不希望这样.我希望视图B回到原来的位置(在视图A下面),这是我认为会发生的事情(但事实并非如此).我怎样才能做到这一点?
先感谢您!
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.ScaleAnimation;
import android.view.animation.Transformation;
import android.widget.LinearLayout.LayoutParams;
public class ViewGoneEffectActivity extends Activity implements OnClickListener {
private View viewComEfeito = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.outroLinear).setOnClickListener(this);
findViewById(R.id.segundo).setOnClickListener(this);
viewComEfeito = findViewById(R.id.outroLinear);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.outroLinear) {
view.startAnimation(new MyScaler(1.0f, 1.0f, 1.0f, 0.0f, 500, view,
true));
}else if(view.getId() == R.id.segundo){
viewComEfeito.setVisibility(View.VISIBLE);
}
}
public class MyScaler extends …Run Code Online (Sandbox Code Playgroud) 我想让视图在用户按下按钮时消失(消失)。
我可以通过执行以下操作将其放入onCreate()方法(主 UI 线程)中:
findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够在另一个线程(主 UI 线程之外)中执行相同的操作。我尝试将上述内容放入我的线程中,但没有成功。
先感谢您!
## 编辑 ####
为了让自己更清楚,我想做这样的事情:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.teste_aba_3);
botao_tab_musica.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
...
findViewById(R.id.llLoadingGallery).setVisibility(View.GONE);
}
});
Run Code Online (Sandbox Code Playgroud)
}
然而,这不起作用!我怎样才能解决这个问题?