Добавление изображений в демонстрационное приложение. Код взят из учебника - PullRequest
0 голосов
/ 10 января 2012

Я учусь использовать функцию горизонтальной прокрутки в Android. Я наткнулся на этот урок от ysamlan и использовал его как демонстрацию, чтобы начать обучение. Что я хочу знать, так это как я могу добавить новый ImageView, поскольку в классе уже есть setContentView. Для добавления новых изображений в демо-версию написано:

 /*
     * Note that you can also define your own views directly in a resource XML, too by using:
     * <com.ur.demo.pack
     *     android:layout_width="fill_parent"
     *     android:layout_height="fill_parent"
     *     android:id="@+id/real_view_switcher">
     *     <!-- your views here -->
     * </com.ur.demo.pack>
     */

Я не понимаю, какой XML-файл я должен объявить для изображений. Ниже приведен весь код для конкретного класса. Пожалуйста, помогите мне.

package ur.demo.pack;


public class HorizontalPagerDemo extends Activity {

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Create the view switcher
    HorizontalPager realViewSwitcher = new HorizontalPager(getApplicationContext());

    // Add some views to it
   final int[] backgroundColors =
            { Color.RED, Color.BLUE, Color.CYAN, Color.GREEN, Color.WHITE, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.DKGRAY, Color.LTGRAY };
    for (int i = 0; i < 10; i++) {
        TextView textView = new TextView(getApplicationContext());
        textView.setText(Integer.toString(i + 1));
        textView.setTextSize(100);
        textView.setTextColor(Color.BLACK);
        textView.setGravity(Gravity.CENTER);
        textView.setBackgroundColor(backgroundColors[i]);
        realViewSwitcher.addView(textView);
    }

    // set as content view

    setContentView(realViewSwitcher);

    // Yeah, it really is as simple as this :-)

    /*
     * Note that you can also define your own views directly in a resource XML, too by using:
     * <com.ur.demo.pack
     *     android:layout_width="fill_parent"
     *     android:layout_height="fill_parent"
     *     android:id="@+id/real_view_switcher">
     *     <!-- your views here -->
     * </com.ur.demo.pack>
     */

    // OPTIONAL: listen for screen changes
    realViewSwitcher.setOnScreenSwitchListener(onScreenSwitchListener);
}

private final HorizontalPager.OnScreenSwitchListener onScreenSwitchListener =
        new HorizontalPager.OnScreenSwitchListener() {
            @Override
            public void onScreenSwitched(final int screen) {
                Log.d("HorizontalPager", "switched to screen: " + screen);
            }
        };
}

Ответы [ 2 ]

1 голос
/ 11 января 2012

вам нужно использовать этот код

final int[] images = {R.drawable.1, R.drawable.2,};
  for(int i=0; i<images.length; i++){
     ImageView imageView = new ImageView(getApplicationContext());
     imageView.setBackgroundResource(backgroundImages[i]);
     realViewSwitcher.addView(imageView);
    }

Ура!

1 голос
/ 10 января 2012

Что делает код, так это определяет все представления в коде и помещает их в один макет контейнера (HorizontalPager). Затем он устанавливает макет для отображения в упражнении. Это, однако, менее часто в разработке Android. Я не совсем уверен, что понял правильно, возможно, у вас уже есть некоторый опыт работы с Android, но более обычный способ определения макетов - использование подпапки раскладок res /. Вы определяете все свои представления, используя xml и пользовательские теги Android, а затем при сборке вы можете получить доступ к файлам макета через R.layout. Вот один пример макета, взятый из учебных пособий по Android:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent" 
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

Если вы поместите его в custom_layout.xml, вы получите к нему доступ и установите его для своей активности следующим образом:

setContentView(R.layout.custom_layout);

Существует также специальный тег для ImageView. Поэтому, если я правильно понял, вы можете добавить представление изображения в custom_layout.xml. С другой стороны, я могу подтвердить, что вы также можете продолжать создавать макеты полностью в коде и использовать

ImageView imageView = new ImageView(getApplicationContext());
imageView.setResourceContent(R.drawable.my_png);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...