2016-05-15 13 views
-1

私は疲れています。私はAndroidの初心者ですが、アプリを作ったのですが、互換性に関する多くの問題に直面しています。私のアプリ、そしてapi minのために働かせる方法15.Right今それは私がより低いAPIに多くの問題を持っているので19です。アンドロイドアプリの互換性に問題があります

Problem android Screen

だから私は

のres \レイアウト のres \レイアウト-sw600dp のres \レイアウト-sw720dp

しかし、まだそれは小さな画面では動作しない、などのファイルを作ることにしました誰かが私にこれを助けることができますか?どのように私はすべての画面に調整することができますか少なくとも。誰かが私を助けることができるなら、私はとても幸せです。

+0

の幅、1024pxですレイアウト? – Pooya

答えて

0

私はこれを行うには3つの方法があります!

  1. あなたが複数のレイアウトあなたが複数DIMEN

    This is example on Stackoverflow

  2. を作成することができます
  3. のres \レイアウトのres \

    See link on Google Developer
    See link on Stackoverflow

  4. を作成することができます
  5. コード

    • を使用してこのコード

パブリッククラスSetViewSizeByPixel {

private LayoutParams params = null; 
private DisplayMetrics metrics = null; 
private Context mContext; 
public static final int match_parent = -1; 

public SetViewSizeByPixel(Context context) { 
    metrics = getMetrics(context); 
    this.mContext = context; 
} 

/** 
* 
*/ 

public int RH(int x) { 
    return metrics.heightPixels * x/1920; 
} 

public int RW(int x) { 
    return metrics.widthPixels * x/1080; 
} 

public int RH720p(int x) { 
    return metrics.heightPixels * x/1280; 
} 

public int RW720p(int x) { 
    return metrics.widthPixels * x/720; 
} 

public int RH(float x) { 
    return (int) (metrics.heightPixels * x/1920); 
} 

public int RW(float x) { 
    return (int) (metrics.widthPixels * x/1080); 
} 

/** 
* Metrics 
*/ 

public DisplayMetrics getMetrics(Activity activity) { 
    metrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    return metrics; 
} 

public DisplayMetrics getMetrics(Context context) { 
    return getMetrics((Activity) context); 
} 

public DisplayMetrics getMetrics() { 
    return metrics; 
} 

public int heightPixels() { 
    return metrics.heightPixels; 
} 

public int widthPixels() { 
    return metrics.widthPixels; 
} 

public float density() { 
    return metrics.density; 
} 

public int densityDpi() { 
    return metrics.densityDpi; 
} 

/** 
* Size 
*/ 

public boolean height(View view, int height) { 
    return size(view, -1, height); 
} 

public boolean width(View view, int width) { 
    return size(view, width, -1); 
} 

public boolean square(View view, int x) { 
    return size(view, x, x); 
} 

public boolean size(View view, int width, int height) { 
    try { 
     params = view.getLayoutParams(); 
     if (width != -1) 
      params.width = width; 
     else 
      params.width = LayoutParams.MATCH_PARENT; 

     if (height != -1) 
      params.height = height; 
     else 
      params.height = LayoutParams.MATCH_PARENT; 
     view.setLayoutParams(params); 
     return true; 
    } catch (Exception e) { 
     Log.e("SetSizeByPercent", e.toString()); 
     return false; 
    } 
} 

/** 
* Size with RW, RH. 
*/ 

public boolean heightR(View view, int height) { 
    return size(view, -1, this.RH(height)); 
} 

public boolean widthR(View view, int width) { 
    return size(view, this.RW(width), -1); 
} 

public boolean squareR(View view, int x) { 
    return size(view, this.RW(x), this.RH(x)); 
} 

public boolean sizeR(View view, int width, int height) { 
    return size(view, RW(width), RH(height)); 
} 

/** 
* Margin R 
*/ 
public void marginTopR(View v, int top) { 
    marginTop(v, RH(top)); 
} 

public void marginR(View v, int lef, int top, int rig, int bot) { 
    margin(v, RH(lef), RH(top), RH(rig), RH(bot)); 
} 

public void marginR(View v, int x) { 
    margin(v, RW(x), RH(x), RW(x), RH(x)); 
} 

/** 
* Margin 
*/ 
public void marginLeft(View v, int lef) { 
    margin(v, lef, -1, -1, -1); 
} 

public void marginTop(View v, int top) { 
    margin(v, -1, top, -1, -1); 
} 

public void marginRight(View v, int rig) { 
    margin(v, -1, -1, rig, -1); 
} 

public void marginBottom(View v, int bot) { 
    margin(v, -1, -1, -1, bot); 
} 

public void marginLeft(View v, int lef, boolean keepOldMargin) { 
    int k = keepOldMargin ? -1 : 0; 
    margin(v, lef, k, k, k); 
} 

public void marginTop(View v, int top, boolean keepOldMargin) { 
    int k = keepOldMargin ? -1 : 0; 
    margin(v, k, top, k, k); 
} 

public void marginRight(View v, int rig, boolean keepOldMargin) { 
    int k = keepOldMargin ? -1 : 0; 
    margin(v, k, k, rig, k); 
} 

public void marginBottom(View v, int bot, boolean keepOldMargin) { 
    int k = keepOldMargin ? -1 : 0; 
    margin(v, k, k, k, bot); 
} 

public void margin(View v, int margin) { 
    margin(v, margin, margin, margin, margin); 
} 

public void margin(View v, int lef, int top, int rig, int bot) { 
    if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { 
     ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); 
     lef = (lef == -1) ? p.leftMargin : lef; 
     top = (top == -1) ? p.topMargin : top; 
     rig = (rig == -1) ? p.rightMargin : rig; 
     bot = (bot == -1) ? p.leftMargin : bot; 

     p.setMargins(lef, top, rig, bot); 
     v.requestLayout(); 
    } 
} 

public LayoutParams getParams() { 
    return params; 
} 

public void setParams(LayoutParams params) { 
    this.params = params; 
} 

/** 
* Text Size 
*/ 
public void textSize(TextView tv, int size) { 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); 
} 

public void textSize(View view, int size) { 
    try { 
     ((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, size); 
    } catch (Exception e) { 
     Log.e("", e.toString()); 
    } 
} 

public void textSizeR(TextView view, int size) { 
    view.setTextSize(TypedValue.COMPLEX_UNIT_PX, RH(size)); 
} 

public void textSizeR(View view, int size) { 
    try { 
     ((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, RH(size)); 
    } catch (Exception e) { 
     Log.e("", e.toString()); 
    } 
} 

/** 
* Animation & TypeFace 
*/ 
public Animation getAnimation(int id) { 
    return AnimationUtils.loadAnimation(mContext, id); 
} 

public Typeface getTypeface(String typefacePath) { 
    return Typeface.createFromAsset(mContext.getAssets(), typefacePath); 
} 

// public void setSize(View v,int w,int h){ 
// float hrate = MyActivity.Height/1920f; 
// size(v, (int) (w*hrate),(int)(h*hrate)); 
// } 
    } 
あるクラス SetViewSizeByPixel.class

を作成

  • あなただけの画面デバイスのテストを取る:

    これは

    // TODO Auto-generated method stub 
        SetViewSizeByPixel setsize = new SetViewSizeByPixel(HighScoreActivity.this); 
        DisplayMetrics metris = setsize.getMetrics(HighScoreActivity.this); 
    
        // Main_Menu 
        setsize.size(layout_header, metris.widthPixels * 1024/1024, metris.heightPixels * 60/600); 
        layout_header.setPadding(metris.widthPixels * 10/1024, metris.heightPixels * 10/600, 
          metris.widthPixels * 10/1024, metris.heightPixels * 10/600); 
        setsize.textSize(txt_top, metris.widthPixels * 15/600); 
        setsize.textSize(txt_time, metris.widthPixels * 15/600); 
        setsize.textSize(txt_main_menu, metris.widthPixels * 15/600); 
        setsize.size(txt_top, metris.widthPixels * 200/1024, metris.heightPixels * 40/600); 
        setsize.size(txt_time, metris.widthPixels * 600/1024, metris.heightPixels * 40/600); 
        setsize.size(txt_main_menu, metris.widthPixels * 204/1024, metris.heightPixels * 40/600); 
    

    注()のonCreate例

    です。そして、写真を使って写真を見せてください。

    metris.widthPixels * 1024分の600

    600 600PXで、所望の幅は、Photoshopの
    1024の画像で測定されたあなたが何であるかを、デバイスのスクリーンテスト

関連する問題