显示不同的图像

时间:2012-05-14 07:13:07

标签: android image

我正在创建一个应用程序,其中我有一个文本框,它给出了图像的描述。触摸它将描述图像的位置。在下方我用了两个按钮在图像之间导航。应该怎么做我这样做?我不理解那件事。

我已经使用了其他类中的图像然后我调用该图像但它无法正常工作。我可以在三天内陷入困境,任何人都可以帮助我。

如果有人认为我在问这个问题,那我很抱歉。

 image i want this way 我的代码如下第一张图片

public class FirstImage extends ImageView {
    float a=0;
    float b=0;

    TextView t= (TextView) findViewById(R.id.textView1);

    public FirstImage(Context context) {
        super(context);
        // TODO Auto-generated constructor stub

    }

    public FirstImage(Context context, AttributeSet attrs) {
          super(context, attrs);

    }




    public  boolean onTouch(MotionEvent me){
        switch(me.getAction()){
        case MotionEvent.ACTION_DOWN:
            a=me.getX();
            b= me.getY();
            pageinfo(a,b);
            break;
        case MotionEvent.ACTION_MOVE:
            a=me.getX();
            b= me.getY();
            pageinfo(a,b);
            break;
        case MotionEvent.ACTION_UP:
            a=me.getX();
            b= me.getY();
            pageinfo(a,b);
            break;
        case MotionEvent.ACTION_OUTSIDE:
            a=me.getX();
            b= me.getY();
            pageinfo(a,b);
            break;
        default: return false;
        }
        return true;

    }

   public void pageinfo(float a,float b){

        t.setText(Float.toString(a)+"x"+Float.toString(b)+"y");

    }



} 

我在布局文件中调用如下...

<com.example.androidtablayout.FirstImage
         android:id="@+id/myandroid"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:src="@drawable/human"
         />

但我不明白为什么它没有显示任何东西ontouch事件。

1 个答案:

答案 0 :(得分:0)

以下代码(在VideosActivity类中,取自链接问题)是问题所在:

FirstImage  i= new FirstImage (this);

它在类的隐式创建的构造函数中创建 FirstImage 实例。但是,您无法在活动的生命周期中尽早生成UI小部件。而且您也不需要,因为布局inflater将为您生成所有UI小部件。

所以只需将代码更改为:

FirstImage  i;

应该这样做。

初始化实例变量i的正确方法已在您的代码中,即在findViewById()中调用onCreate()

<强>更新

您希望在触摸图像时调用onTouch。但onTouch不是您可以覆盖的超类的方法。相反,onTouchView.OnTouchListener接口的方法。

要修复它,请将实例注册为侦听器(使用setOnTouchListener)并声明它以实现View.OnTouchListener。或者将方法名称更改为OnTouchEvent(可以覆盖)。