将图像添加到演示应用程序。代码取自教程

时间:2012-01-10 11:23:17

标签: android xml image

我正在学习如何在Android中使用水平滚动功能。我遇到了这个教程by 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 个答案:

答案 0 :(得分:1)

代码所做的是定义代码中的所有视图并将它们放在一个容器布局(Horizo​​ntalPager)中。然后它设置要在活动中显示的布局。然而,这在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);

答案 1 :(得分:1)

您需要使用此代码

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);
    }

干杯!