android :(坏)布局背景图像质量低

时间:2012-03-20 17:48:24

标签: android image layout

在发布此问题之前,我尝试了在Android部分找到的所有答案,但没有成功...
由于某种原因,设备中的图像质量很差,在Eclipse和虚拟设备中非常好 看截图示例: example http://img714.imageshack.us/img714/1358/84044294.jpg

我该怎么办? 我尝试用72dpi和300 dpi制作图像,PNG / JPG分辨率为1280x800   但没有任何作用......
请帮忙!!

这是我的 LiveNewsActivity.java 也许我做错了什么?

package com.prog.livenews;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;


public class LiveNewsActivity extends Activity {
/** Called when the activity is first created. */

//############################
//######### VARS #############

Button login;
Button register;

//############################
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    getWindow().setFormat(PixelFormat.RGBA_8888);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.bg, options);

    findViewById(R.id.frameLayout1).setBackgroundDrawable(new BitmapDrawable(gradient));

    login = (Button) findViewById(R.id.main_login_button);
    register = (Button) findViewById(R.id.main_register_button);



    login.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("com.prog.livenews.LOGIN"));
        }
    });

    register.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("com.prog.livenews.REGISTER"));
        }
    });


}

}

4 个答案:

答案 0 :(得分:7)

试一试:

将它放在第一个活动

上的setContentView(layoutId)之前
getWindow().setFormat(PixelFormat.RGBA_8888);

并在第一个活动中调用setContentView(layoutId)之后放下以下代码:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = true;
options.inScaled = false;
options.inDither = false;
options.inPurgeable = true;
Bitmap preparedBitmap = BitmapFactory.decodeResource(yourAppName.getSharedApplication().getResources(),
            R.drawable.bg, options);
    Drawable background = new BitmapDrawable(preparedBitmap);
    ((LinearLayout) findViewById(R.id.yourLayoutId))
        .setBackgroundDrawable(background);

并且你将你的xml图像放在res / drawable中“如果你有xml图像”文件夹和png,jpeg和其他普通图像放在res / drawable-hdpi文件夹中。

希望这有帮助。

答案 1 :(得分:2)

  

我尝试了在Android部分找到的所有答案,但没有取得任何成功

如果你说过你尝试过哪种方法会很有帮助,但Marc的评论是正确的。您需要确保您的图像和窗口都具有更高的位深度(可能是ARGB_8888)。有关详细信息,请参阅this article,您可以启用抖动。把它放在onCreate中应该照顾很多:

getWindow().setFormat(PixelFormat.RGBA_8888);

答案 2 :(得分:2)

O.K伙计们,我找到了解决方案 ... 据我了解...在Photoshop中保存渐变图像时,Photoshop会尝试通过删除 Alpha通道来优化图像大小。

所以你需要从顶部(左/右)角或按钮(右/左)角删除一个像素

然后Photoshop将“看到”该图像具有Alpha通道,并且将在设备上工作...   请注意......某些设备无法显示完美的渐变色..

希望有用! 谢谢你的帮助!

答案 3 :(得分:0)

尝试使用高质量图像。你能否确认背景是否还包含地球图像和文字?背景是否有渐变色?