Учебник по созданию пользовательских макетов для Android? - PullRequest
3 голосов
/ 17 июня 2011

Я в своем уме и пытаюсь выяснить это и надеюсь, что есть кто-то, у кого есть решение.

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

Я ищу: 1) Простое, пошаговое руководство о том, как создать подклассViewGroup для создания пользовательских макетов.2) Базовое понимание внутренней механики, например, как получить доступ к дочерним представлениям, как и когда попросить дочерние представления нарисовать себя, как определить xml для пользовательского макета, как получить доступ к пользовательским атрибутам xml и т. Д.

Я просмотрел весь интернет, и я могу найти на нем только небольшие кусочки, и даже не смог начать создавать подкласс.

Я нашел 1) Aвыступление на http://parleys.com/#id=2191&sl=3&st=5, но оно прекращается через несколько минут с просьбой о подписке.2) Ссылка API на http://developer.android.com/reference/android/view/ViewGroup.html, но это не дает никакой подсказки о том, как реально реализовать подкласс.

1 Ответ

2 голосов
/ 19 октября 2016

Я нашел это.Это сложно ни за что.

Учебное пособие

Нет более абсолютного макета в поддержке Android.Я просто хочу метод setX.FrameLayout - лучший вариант.Смотрите также: stackoverflow answer

FrameLayout позволяет вам устанавливать положение и размеры, аналогичные абсолютным.Если вы хотите пойти глубже, вам нужно использовать следующие методы:

// Для x и y вы можете использовать onCreate

// Лучший способ настройки Width AND Height - используйте post // postМетод означает, что пользовательский интерфейс готов

  VEIW_MAIN = (ViewGroup) findViewById(R.id.activity_main);

   VEIW_MAIN.post(new Runnable() {
            @Override
            public void run() {

                LayoutParams paraBigText = BigText.getLayoutParams();
                Double d24 = 200.0;
                paraBigText.width = d24.intValue();
                BigText.setLayoutParams(paraBigText);
                BigText.setGravity( Gravity.CENTER_HORIZONTAL);

           }
       });

...

ViewTreeObserver vto = SOME_ELEMENT.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()       
{
    public boolean onPreDraw() {

         // changes here
        return true;
    }
}); 

...

Если вам нужно исправить, используйте это:

 if (EKRAN.WIDTH() <= 480)
            {
                FIX_FOR_480_WIDTH();
            }
            else if (EKRAN.WIDTH() == 540) {
                FIX_FOR_540_WIDTH();
            }
            else if (EKRAN.WIDTH() == 720) {
                FIX_FOR_720_WIDTH();
            }
            else if (EKRAN.WIDTH() == 1080) {
                FIX_FOR_1080_WIDTH();
            }

...

 void FIX_FOR_540_WIDTH()
    {
        System.out.println("FIX FUNCTION FOR 540 low width !!!!!!!");
        SOMEELEMENT.setY( 0.865f * EKRAN.HEIGHT() );
    }

...

Скопировать класс ЭКРАН из: Установить положение в процентах - Android DisplayMetrics

В другихКстати, если вы действительно хотите полный пользовательский порядок, вы можете использовать canvas2d и создать собственный уникальный пользовательский интерфейс ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...