Поддержка нескольких экранов для больших и маленьких экранов - PullRequest
1 голос
/ 27 января 2012

хорошо, я прочитал много глав об этом, но все еще не знаю, что лучше всего сделать для этого проекта.

Вот ситуация, когда у меня есть проект [большой :)],и в этом проекте все сделано для экранов с разрешением 480 х 800 пикселей.

Вот новое требование :).Они просят поддерживать устройства с разрешением 240 х 320 пикселей (это разрешение компоновки - небольшое).Ну, пока все хорошо :), но проблема в том, что разрешение 240х320 слишком мало, чтобы уместить компонент просто с масштабированием макета-нормально.Мне нужно иметь совершенно новый дизайн для телефонов с маленькими экранами.

Это означает, что если бы у меня был текстовый файл R.id.textview1 в layout / main.xml, теперь в layout-small / main.xml У меня не будет R.id.textview1, но теперь у меня будет два компонента, скажем, R.id.button1 и R.id.textviewsmall ... Моя точка зрения заключается в том, что подобный код не будет работать, так как в layout / main.xml textview1 существует, но в layout-small / main.xml нет, и он выдаст исключение

((TextView)findViewbyId(R.id.textview1)).setText("something");

Конечно, это то, что я объяснил, очень глупый сценарий, у меня есть кое-что действительно сложноено я надеюсь, что вы поняли, чего я хочу достичь.

Проблема в том, что уже слишком поздно внедрять фрагменты, потому что это будет большая работа, которая должна быть сделана.Поэтому мне нужны некоторые рекомендации, как мне это сделать ...

Любые идеи или некоторые рекомендации по дизайну были бы очень полезны, спасибо ...

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Да, вы можете сделать это. Во многих приложениях мы можем вручную установить такой тип макета по желанию.

Для этого вам сначала нужно программно выбрать высоту и ширину экрана. Теперь один раз, если вы получили это. Вы можете сделать Условие в Java-файле, что если Высота экрана и Ширина Так и так. Тогда сделай это.

Надеюсь, вы получили мое очко.

Или

Если вы хотите установить макет с помощью XML, то создайте другой макет XML, как показано ниже:

res/layout/my_layout.xml             // layout for normal screen size("default")        res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

И после этого вы можете вручную установить высоту и ширину конкретного макета. Надеюсь, что это решение вашей проблемы.

Тем не менее, если это не ваше решение, то позвольте мне сообщить. , .

Наслаждайтесь. :)

1 голос
/ 26 октября 2012

Один из возможных способов - создать макет для небольшого экрана и указать атрибуты веса, после чего он будет настраиваться и на больших экранах. Если вы также используете изображения с различной плотностью, то в большинстве случаев это, вероятно, подойдет вам. Вот как вы можете указать вес в макете.

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
 <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="small"
android:layout_weight="0.2"
android:background="#123" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:text="huge"
android:background="#456"
 />
</LinearLayout>
...