Android刷卡图片

时间:2011-08-09 09:38:06

标签: android swipe android-image

我正在尝试在我的android应用程序中找到一种刷图像的方法。我找到了一个如何使用textview做到这一点的例子,但是我不能用ImageView做同样的事情。这是使用TextView的原始代码:

HorizontalPager realViewSwitcher = new HorizontalPager(getApplicationContext());

// Add some views to it
final int[] backgroundColors =
        { Color.RED, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW };
for (int i = 0; i < 5; 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);

这是我正在尝试使用ImageViews的代码:

   HorizontalPager realViewSwitcher = new HorizontalPager(getApplicationContext());
    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("one", R.drawable.one);
    map.put("two", R.drawable.two);
    map.put("three", R.drawable.three);

    img1.setImageResource(map.get("one"));
    img2.setImageResource(map.get("two"));
    img3.setImageResource(map.get("three"));
    realViewSwitcher.addView(img1);
    realViewSwitcher.addView(img2);
    realViewSwitcher.addView(img3);

    setContentView(realViewSwitcher);

图像一,二,三是在drawable文件夹中。当我使用我的代码时,它给我一个例外:

logcat的:

08-09 09:21:24.097: ERROR/AndroidRuntime(743): Uncaught handler: thread main exiting due to uncaught exception
08-09 09:21:24.115: ERROR/AndroidRuntime(743): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stampii.stampii/com.stampii.stampii.cards.Cards}: java.lang.NullPointerException
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.os.Looper.loop(Looper.java:123)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread.main(ActivityThread.java:4363)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at java.lang.reflect.Method.invokeNative(Native Method)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at java.lang.reflect.Method.invoke(Method.java:521)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at dalvik.system.NativeStart.main(Native Method)
08-09 09:21:24.115: ERROR/AndroidRuntime(743): Caused by: java.lang.NullPointerException
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at com.stampii.stampii.cards.Cards.onCreate(Cards.java:30)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
08-09 09:21:24.115: ERROR/AndroidRuntime(743):     ... 11 more

任何想法如何使事情发挥作用?

2 个答案:

答案 0 :(得分:1)

试试这个并报告回来

HorizontalPager realViewSwitcher = new HorizontalPager(getApplicationContext());

ImageView img1 = new ImageView(getApplicationContext());
ImageView img2 = new ImageView(getApplicationContext());
ImageView img3 = new ImageView(getApplicationContext());

img1.setImageResource(R.drawable.one);
img2.setImageResource(R.drawable.two);
img3.setImageResource(R.drawable.three);

realViewSwitcher.addView(img1);
realViewSwitcher.addView(img2);
realViewSwitcher.addView(img3);

setContentView(realViewSwitcher); 

答案 1 :(得分:0)

对于滑动图像,我们可以简单地使用ViewPager概念。

1.在布局中设置viewpager

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>

public class MyMain extends Activity {

         @Override public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); setContentView(R.layout.main);

             ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
              ImagePagerAdapter adapter = new ImagePagerAdapter();
              viewPager.setAdapter(adapter);
           }

        private class ImagePagerAdapter extends PagerAdapter {
             private int[] mImages = new int[] {
                   R.drawable.one,
                   R.drawable.two,
                   R.drawable.hree,
                   R.drawable.four
                       };

                     @Override
                   public int getCount() {
                   return mImages.length;
                     }

         @Override
           public boolean isViewFromObject(View view, Object object) {
              return view == ((ImageView) object);
                 }

           @Override
           public Object instantiateItem(ViewGroup container, int position) {
                Context context = MyMain.this;
              ImageView imageView = new ImageView(context);
           int padding =context.getResources().  
                getDimensionPixelSize(R.dimen.padding_medium);
             imageView.setPadding(padding, padding, padding, padding);
             imageView.setScaleType(ImageView.ScaleType.CENTER);
  imageView.setImageResource(mImages[position]);
  ((ViewPager) container).addView(imageView, 0);