Android 如何使我的设计适合所有设备?
嗨,我正在开发一个应用程序,其中字母表并不适合所有设备。对于HCL ME平板电脑,我的设计不适合。对三星来说,它正在发挥作用。我的XML文件是:Android 如何使我的设计适合所有设备?,android,Android,嗨,我正在开发一个应用程序,其中字母表并不适合所有设备。对于HCL ME平板电脑,我的设计不适合。对三星来说,它正在发挥作用。我的XML文件是: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2" android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_weight="1">
<LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_weight="1">
<TextView android:id="@+id/letter1" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"></TextView>
<TextView android:id="@+id/letter2" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></TextView>
<TextView android:id="@+id/letter3" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_weight="1">
<ImageView android:id="@+id/imag"
android:gravity="center"
android:scaleType = "fitCenter"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_gravity="center">
</ImageView>
</LinearLayout>
</LinearLayout>
<LinearLayout android:layout_gravity="bottom"
android:id="@+id/linearLayout2"
android:layout_height="wrap_content" android:orientation="horizontal" android:layout_width="match_parent">
<Button android:id="@+id/previous" android:layout_width="wrap_content" android:layout_weight="1" android:text="Previous" android:layout_height="wrap_content" ></Button>
<Button android:id="@+id/practice" android:layout_width="wrap_content" android:layout_weight="1" android:text="Practice" android:layout_height="wrap_content" android:onClick="onClick"></Button>
<Button android:id="@+id/home" android:layout_width="wrap_content" android:layout_weight="1" android:text="Home" android:layout_height="wrap_content"></Button>
<Button android:id="@+id/spell" android:layout_width="wrap_content" android:layout_weight="1" android:text="Spell" android:layout_height="wrap_content" android:onClick="Content"></Button>
<Button android:id="@+id/next" android:layout_width="wrap_content" android:layout_weight="1" android:text="Next" android:layout_height="wrap_content" android:onClick="Content"></Button>
</LinearLayout>
</LinearLayout>
我的java文件是:
package com.android;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.SimpleGestureFilter.SimpleGestureListener;
public class MyAcivity extends Activity implements SimpleGestureListener {
private SimpleGestureFilter detector;
private static int counter=-1;
private String[] mBtn1 ={"C","D","E","F","G","H","IÄ","J","K","L","M","N","O","CA","CB"};
private TextView txtLetter;
private ImageView imgLetter;
private int[] imgArr={R.drawable.w1,R.drawable.w2,R.drawable.w3,R.drawable.w4,R.drawable.w5,R.drawable.w6,R.drawable.w7,R.drawable.w8,R.drawable.w9,R.drawable.w10,R.drawable.w11,R.drawable.w12,
R.drawable.w13,R.drawable.w14,R.drawable.w15};
private TextView txtKannada;
private String[] mBtn2 = {"CgÀ¸À","DªÉÄ","E°","F±À","GqÀ","Hl","IĶ","J¯É","Kr","LzÀÄ","M¯É","N¯É","OµÀzsÀ",
"CAUÀr","CB"};
private String[] mBtn3 = {"ARASA","AME","ILI","ISA","UDA","UTA","RUSHI","ELE","EDI","AIDU","oLE","OLE","AUSHADA",
"ANGADI","AHA"};
private TextView txtEnglish;
private int[] mAudio = {R.raw.a,R.raw.b,R.raw.c,R.raw.d,R.raw.e,R.raw.f,R.raw.g,R.raw.h,R.raw.i,R.raw.j,
R.raw.k,R.raw.l,R.raw.m,R.raw.n,R.raw.o};
protected MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.content);
detector = new SimpleGestureFilter(this,this);
if(counter == -1)
counter =getIntent().getExtras().getInt("POSITION");
Typeface tf = Typeface.createFromAsset(getBaseContext().getAssets(), "fonts/brhknd.ttf");
txtLetter = (TextView)findViewById(R.id.letter1);
txtKannada = (TextView)findViewById(R.id.letter2);
txtEnglish = (TextView)findViewById(R.id.letter3);
imgLetter = (ImageView)findViewById(R.id.imag);
txtLetter.setTypeface(tf);
txtLetter.setText(mBtn1[counter]);
txtLetter.setTextSize(350);
txtKannada.setTypeface(tf);
txtKannada.setText(mBtn2[counter]);
txtKannada.setTextSize(100);
txtEnglish.setText(mBtn3[counter]);
txtEnglish.setTextSize(50);
Button btnNext = (Button)findViewById(R.id.next);
btnNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(counter<imgArr.length-1)
counter++;
changeContent();
}
});
Button mPlay = (Button)findViewById(R.id.spell);
mPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp = MediaPlayer.create(MySwara.this, mAudio[counter]);
mp.start();
}
});
Button btnPrvs = (Button)findViewById(R.id.previous);
btnPrvs.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(counter>0)
counter--;
changeContent();
}
});
Button btnPractice = (Button)findViewById(R.id.practice);
btnPractice.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MySwara.this,DrawingActivity.class);
startActivity(intent);
}
});
Button btnHome = (Button)findViewById(R.id.home);
btnHome.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MySwara.this,mainClass.class);
startActivity(intent);
}
});
}
public void changeContent()
{
txtLetter.setText(mBtn1[counter]);
txtKannada.setText(mBtn2[counter]);
txtEnglish.setText(mBtn3[counter]);
//imgLetter.setBackgroundResource(imgArr[counter]);
Bitmap bm = BitmapFactory.decodeResource(getResources(), imgArr[counter]);
imgLetter.setImageBitmap(bm);
}
@Override
public boolean dispatchTouchEvent(MotionEvent me){
this.detector.onTouchEvent(me);
return super.dispatchTouchEvent(me);
}
@Override
public void onSwipe(int direction) {
String str = "";
switch (direction) {
case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right";
if(counter>0)
counter--;
changeContent();
break;
case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
if(counter<imgArr.length-1)
counter++;
changeContent();
break;
}
}
}
package.com.android;
导入android.app.Activity;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Typeface;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.android.simplegestruefilter.simplegestruelistener;
公共类Myacity extends活动实现SimpleGetStureListener{
专用单纯形滤波器检测器;
专用静态整型计数器=-1;
私有字符串[]mBtn1={“C”、“D”、“E”、“F”、“G”、“H”、“IÄ”、“J”、“K”、“L”、“M”、“N”、“O”、“CA”、“CB”};
私有文本视图txtLetter;
私有ImageView imgLetter;
private int[]imgArr={R.drawable.w1,R.drawable.w2,R.drawable.w3,R.drawable.w4,R.drawable.w5,R.drawable.w6,R.drawable.w7,R.drawable.w8,R.drawable.w9,R.drawable.w10,R.drawable.w11,R.w12,
R.drawable.w13,R.drawable.w14,R.drawable.w15};
私有文本视图txtKannada;
私有字符串[]mBtn2={“CgÀ¸À”、“DÀ”、“E°”、“FÀ”、“GqÀ”、“Hl”、“IÄ”、“JÉ”、“Kr”、“LzÀ196”、“MÉ”、“NÉ”、“OÀzsÀ”,
“CAUÀr”、“CB”};
私有字符串[]mBtn3={“ARASA”、“AME”、“ILI”、“ISA”、“UDA”、“UTA”、“RUSHI”、“ELE”、“EDI”、“AIDU”、“oLE”、“oLE”、“AUSHADA”,
“ANGADI”,“AHA”};
私有文本视图txtEnglish;
private int[]mAudio={R.raw.a,R.raw.b,R.raw.c,R.raw.d,R.raw.e,R.raw.f,R.raw.g,R.raw.h,R.raw.i,R.raw.j,
R.raw.k,R.raw.l,R.raw.m,R.raw.n,R.raw.o};
受保护的媒体播放器mp;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.content);
检测器=新的SimpleGestureFilter(这个,这个);
如果(计数器==-1)
计数器=getIntent().getExtras().getInt(“位置”);
Typeface tf=Typeface.createFromAsset(getBaseContext().getAssets(),“font/brhknd.ttf”);
txtLetter=(TextView)findViewById(R.id.letter1);
txtKannada=(TextView)findViewById(R.id.letter2);
txtEnglish=(TextView)findViewById(R.id.letter3);
imgLetter=(ImageView)findViewById(R.id.imag);
txtLetter.setTypeface(tf);
txtLetter.setText(mBtn1[计数器]);
txtLetter.settxtSize(350);
设置字体(tf);
txtKannada.setText(mBtn2[计数器]);
txtKannada.setTextSize(100);
txtEnglish.setText(mBtn3[计数器]);
txtEnglish.settxtsize(50);
按钮btnNext=(按钮)findViewById(R.id.next);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(计数器0)
计数器--;
changeContent();
}
});
按钮BTNPracce=(按钮)findViewById(R.id.practice);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=newintent(MySwara.this,DrawingActivity.class);
星触觉(意向);
}
});
按钮btnHome=(按钮)findViewById(R.id.home);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MySwara.this,mainClass.class);
星触觉(意向);
}
});
}
公共内容()
{
txtLetter.setText(mBtn1[计数器]);
txtKannada.setText(mBtn2[计数器]);
txtEnglish.setText(mBtn3[计数器]);
//imgLetter.setBackgroundResource(imgArr[counter]);
位图bm=BitmapFactory.decodeResource(getResources(),imgArr[counter]);
imgLetter.setImageBitmap(bm);
}
@凌驾
公共布尔dispatchTouchEvent(MotionEvent me){
本.探测器.本体通风口(me);
返回super.dispatchTouchEvent(me);
}
@凌驾
公共空间(内部方向){
字符串str=“”;
开关(方向){
case SimpleGestureFilter.SWIPE_RIGHT:str=“向右滑动”;
如果(计数器>0)
计数器--;
changeContent();
打破
case SimpleGestureFilter.SWIPE_LEFT:str=“SWIPE LEFT”;
如果(计数器分别为每个设备创建xml。遵循
第二种方式:
创建父LinearLayout并将其传递给以下方法
public static boolean isTabletPC(Context context) {
Display display = ((WindowManager) context
.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if (display.getWidth() >= 1200) {
isTabletPC = true;
return isTabletPC;
} else {
isTabletPC = false;
return isTabletPC;
}
}
public static void fixUiDeviceDependencies(
Activity act, LinearLayout llParent) {
if (Utilities.isTabletPC(act)) {
Display display = ((WindowManager) act
.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
LayoutParams params = (LayoutParams) llParent
.getLayoutParams();
params.width = display.getWidth() / 2;
llParent.setLayoutParams(params);
}
}
有两种可能性:
对不同大小的屏幕使用不同的xml文件->检查此处
您可以使用scrollview
->
或者简单地让你的布局适合你想要支持的最小屏幕尺寸,然后在大屏幕上有“一点”未使用的空间
这真的取决于你需要什么。可能最兼容和先进的解决方案是1
但是请注意这样一个事实,即屏幕布局上的每一个更改都必须针对遵循此路线的每个xml文件进行复制!ps因为您是新手,所以,只需一条旁注……一旦您接受了答案,不要忘了检查它是否已被接受。这样您将继续关注您的问题,但我希望动态实现。Beca使用我想适合平板电脑和手机。如何使用