Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问android中的视图_Android_Views_Visibility - Fatal编程技术网

无法访问android中的视图

无法访问android中的视图,android,views,visibility,Android,Views,Visibility,我正在使用metaio sdk。我试图在按下按钮时简单地切换两个ImageView的可见性,但它不起作用 我的布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ma_layout" android:layout_width="fill_parent" android:layout_height="fill_parent"

我正在使用metaio sdk。我试图在按下按钮时简单地切换两个ImageView的可见性,但它不起作用

我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ma_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00000000" >
-----

<ImageView
    android:id="@+id/zoomIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_marginTop="4dp"
    android:layout_marginRight="4dp"
    android:background="@drawable/zooming"
    android:onClick="seeZoom" />


    <ImageView
        android:id="@+id/scrollerBg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/scrollerbg"
        android:visibility="invisible"/>

    <ImageView
        android:id="@+id/scroller"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/scroller"  
        android:visibility="invisible"/>
---
</RelativeLayout>

-----
---
我的代码:

import android.view.MotionEvent;
import java.util.List;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;

import com.metaio.sdk.jni.IGeometry;
import com.metaio.sdk.jni.IMetaioSDKAndroid;
import com.metaio.sdk.jni.Vector3d;

import android.os.Environment;
import com.metaio.sdk.ARViewActivity;
import com.metaio.sdk.jni.EPLAYBACK_STATUS;
import com.metaio.sdk.jni.IMetaioSDKCallback;
import com.metaio.sdk.jni.MovieTextureStatus;
import com.metaio.sdk.jni.Rotation;
import com.metaio.sdk.MetaioDebug;



import com.company.abc.R;

public class MainActivity extends ARViewActivity 
{

    public RelativeLayout mGUIView;
    //public ImageView imgView1;
    //public ImageView imgView2;
    Camera camera;
    private IGeometry tdp1, tdp2, tdp3, tdp4, tdp5, tdp6, tdp7, sal1, sal2;
    boolean isTorchOn=false;
    Parameters camParams;
    public ImageView basePng;
    public ImageView zoomIcon;
    ImageView scroller;
    public LayoutParams scrollerParams;
    ImageView scrollerBg;
    public LayoutParams scrollerBgParams;
    boolean afc;
    int counter;
    int displayWidthbyTwo;
    int displayHeightbyTwo;
    int scrollerW;
    int scrollerH;
    int scrollerBgW;
    int scrollerBgH;
    int ZoomValue=0;
    int maxZoomLevel;
    int maxZoombyfour;
    boolean zoomSupported;
    boolean isZoomBarVisible=false;



    private MetaioSDKCallbackHandler mCallbackHandler;

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



        MetaioDebug.enableLogging(true);

        mCallbackHandler = new MetaioSDKCallbackHandler();

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        displayWidthbyTwo=metrics.widthPixels/2;
        displayHeightbyTwo=metrics.heightPixels/2;

        PackageManager PM= this.getPackageManager();
        afc = PM.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS);

        setContentView(R.layout.mainactivity);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            mGUIView = (RelativeLayout) getLayoutInflater().inflate(R.layout.mainactivity, null);


        zoomIcon = (ImageView) mGUIView.findViewById(R.id.zoomIcon);

        scroller = (ImageView) mGUIView.findViewById(R.id.scroller);
        scrollerBg = (ImageView) mGUIView.findViewById(R.id.scrollerBg);

        scroller.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        scrollerW = scroller.getMeasuredWidth()/2;
        scrollerH = scroller.getMeasuredHeight()/2;
        scrollerParams = (LayoutParams) scroller.getLayoutParams();
        scrollerParams.topMargin = displayHeightbyTwo-150-scrollerH;
        scroller.setLayoutParams(scrollerParams);


        scrollerBg.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        scrollerBgW = scrollerBg.getMeasuredWidth()/2;
        scrollerBgH = scrollerBg.getMeasuredHeight()/2;
        scrollerBgParams = (LayoutParams) scrollerBg.getLayoutParams();
        scrollerBgParams.topMargin = displayHeightbyTwo-scrollerBgH;
        scrollerBg.setLayoutParams(scrollerBgParams);



        scroller.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                LayoutParams layoutParams = (LayoutParams) scroller.getLayoutParams();
                switch(event.getAction())
                {
                case MotionEvent.ACTION_MOVE:
                    //Get y coord of the touch point relative to screen
                    int y_cord = (int) event.getRawY();

                    //Restrict scroller bewtween center of screen +- 150
                    if(y_cord>(displayHeightbyTwo+150))
                        y_cord = displayHeightbyTwo+150;
                    if(y_cord<(displayHeightbyTwo-150))
                        y_cord = displayHeightbyTwo-150;

                    //Set zoom levels at various steps
                    if(y_cord<=displayHeightbyTwo-90){
                        camParams.setZoom(0);                   
                        Log.i("Zooming:","0");
                        ZoomValue=0;}
                    if(y_cord<=displayHeightbyTwo-30 && y_cord>displayHeightbyTwo-90){
                        camParams.setZoom(maxZoombyfour);
                        Log.i("Zooming:","1");
                        ZoomValue=1;}
                    if(y_cord<=displayHeightbyTwo+30 && y_cord>displayHeightbyTwo-30){
                        camParams.setZoom(maxZoombyfour*2);
                        Log.i("Zooming:","2");
                        ZoomValue=2;}
                    if(y_cord<=displayHeightbyTwo+90 && y_cord>displayHeightbyTwo+30){
                        camParams.setZoom(maxZoombyfour*3);
                        Log.i("Zooming:","3");
                        ZoomValue=3;}
                    if(y_cord>displayHeightbyTwo+90){
                        camParams.setZoom(maxZoomLevel);
                        Log.i("Zooming:","4");
                        ZoomValue=4;}
                    camera.setParameters(camParams);
                    scrollerParams.topMargin = y_cord-scrollerH;
                    scroller.setLayoutParams(scrollerParams);
                    break;

                default:
                    break;
                }
                return true;
            }
        });


    }

    @Override
    protected int getGUILayout() 
    {
        // TODO: return 0 in case of no GUI overlay
        return R.layout.mainactivity; 
    }


    @Override
    protected void onStart() 
    {
        super.onStart();
        // hide GUI until SDK is ready
        //if (!mRendererInitialized)
            //mGUIView.setVisibility(View.GONE);
        // add GUI layout
        addContentView(mGUIView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


    }   

    @Override
    protected void loadContents() 
    {
        // Load desired tracking data for planar marker tracking
        String Path = "storage/sdcard1/AS/tdp/";
        //final String trackingConfigFile = AssetsManager.getAssetPath("Tracking.xml");
        boolean result = metaioSDK.setTrackingConfiguration(Path+"Tracking.xml"); 

        String movie1Path = Path + "movie1.3gp";
        tdp1 = metaioSDK.createGeometryFromMovie(movie1Path, false) ;
        tdp1.setCoordinateSystemID(1);
        tdp1.setScale(new Vector3d(4.0f,4.0f,4.0f));
        tdp1.startMovieTexture(true); // loop = true;

    }


    @Override
    protected void onGeometryTouched(IGeometry geometry) {
        // TODO Auto-generated method stub
    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }



    @Override
    public void onSurfaceChanged(int width, int height) {
        //always call the super implementation first
        super.onSurfaceChanged(width, height);
        camera=IMetaioSDKAndroid.getCamera(this);
        camParams = camera.getParameters();
        if(afc){
            List<String> focusModes = camParams.getSupportedFocusModes();
            if(focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
                camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
            else if (focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
                camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
            camera.setParameters(camParams);
        }

        if(camParams.isZoomSupported()){
            this.runOnUiThread(new Runnable(){
                            public void run(){
                                zoomIcon.setVisibility(View.VISIBLE);
                            }
                        });
            maxZoomLevel = camParams.getMaxZoom();
            maxZoombyfour = Math.round(maxZoomLevel/4);
            zoomSupported=true;
         }

    }

    @Override
    protected IMetaioSDKCallback getMetaioSDKCallbackHandler() 
    {
        return mCallbackHandler;
    }

    final class MetaioSDKCallbackHandler extends IMetaioSDKCallback 
    {

    }

    public void showTorch(View v) {
        if(isTorchOn){
            IMetaioSDKAndroid.stopTorch(this);
            isTorchOn=false;
        }
        else{
            IMetaioSDKAndroid.startTorch(this);
            isTorchOn=true;
        }

    }

    public void seeZoom(View v) {
        if(isZoomBarVisible){
            scroller.setVisibility(0);
            //scrollerBg.setVisibility(View.INVISIBLE);
            isZoomBarVisible=false;
            Log.i("ss","ss");
        }
        else{
            scroller.setVisibility(1);
            isZoomBarVisible=true;
            Log.i("ss","ss");
        }

    }
    public void seeSettings(View v) {
        Intent intent = new Intent(this, Settings.class);
        startActivity(intent);
        //finish();
    }

    public void seeCatalog(View v) {
        Intent intent = new Intent(this, CatalogueActivity.class);
        startActivity(intent);
        //finish();
    }

}
导入android.view.MotionEvent;
导入java.util.List;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.content.pm.PackageManager;
导入android.content.res.Configuration;
导入android.hardware.Camera;
导入android.hardware.Camera.Parameters;
导入android.os.Bundle;
导入android.util.DisplayMetrics;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.MeasureSpec;
导入android.view.WindowManager;
导入android.widget.ImageView;
导入android.widget.RelativeLayout;
导入android.widget.RelativeLayout.LayoutParams;
导入com.metaio.sdk.jni.igometry;
导入com.metaio.sdk.jni.imetaiosdk Android;
导入com.metaio.sdk.jni.Vector3d;
导入android.os.Environment;
导入com.metaio.sdk.ARViewActivity;
导入com.metaio.sdk.jni.EPLAYBACK_状态;
导入com.metaio.sdk.jni.imetaiosdk回调;
导入com.metaio.sdk.jni.MovieTextureStatus;
导入com.metaio.sdk.jni.Rotation;
导入com.metaio.sdk.MetaioDebug;
导入com.company.abc.R;
公共类MainActivity扩展了ARViewActivity
{
公共相对论;
//公共图像视图imgView1;
//公共图像视图imgView2;
摄像机;
私人Igometry tdp1、tdp2、tdp3、tdp4、tdp5、tdp6、tdp7、sal1、sal2;
布尔值=假;
参数camParams;
公共图像视图basePng;
公共图像视图zoomIcon;
图像视图滚动条;
公共布局参数scrollerParams;
ImageView scrollerBg;
公共布局参数scrollerBgParams;
布尔afc;
整数计数器;
int显示宽度为2;
int显示高度为2;
int-scrollerW;
int scrollerH;
int-gw;
int-scrollerBgH;
int ZoomValue=0;
int maxZoomLevel;
int maxZoombyfour;
支持布尔缩放;
布尔值isZoomBarVisible=false;
私有MetaioSDKCallbackHandler-mCallbackHandler;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MetaioDebug.enableLogging(true);
mCallbackHandler=new MetaioSDKCallbackHandler();
DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量);
displayWidthbyTwo=metrics.widthPixels/2;
displayHeightbyTwo=metrics.heightPixels/2;
PackageManager PM=this.getPackageManager();
afc=PM.hasSystemFeature(PackageManager.FEATURE\u CAMERA\u AUTOFOCUS);
setContentView(R.layout.mainactivity);
getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开);
mGUIView=(RelativeLayout)GetLayoutFlater().inflate(R.layout.mainactivity,null);
zoomIcon=(ImageView)mGUIView.findViewById(R.id.zoomIcon);
scroller=(ImageView)mGUIView.findviewbyd(R.id.scroller);
scrollerBg=(ImageView)mGUIView.findviewbyd(R.id.scrollerBg);
scroller.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected),MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected));
scrollerW=scroller.getMeasuredWidth()/2;
scrollerH=scroller.getMeasuredHeight()/2;
scrollerParams=(LayoutParams)scroller.getLayoutParams();
scrollerParams.topMargin=displayHeightbyTwo-150-scrollerH;
scroller.setLayoutParams(scrollerParams);
scrollerBg.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected),MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected));
scrollerBgW=scrollerBg.getMeasuredWidth()/2;
scrollerBgH=scrollerBg.getMeasuredHeight()/2;
scrollerBgParams=(LayoutParams)scrollerBg.getLayoutParams();
scrollerBgParams.topMargin=显示高度乘以两个scrollerBgH;
scrollerBg.setLayoutParams(scrollerBgParams);
scroller.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
LayoutParams LayoutParams=(LayoutParams)滚动条。getLayoutParams();
开关(event.getAction())
{
case MotionEvent.ACTION\u移动:
//获取触摸点相对于屏幕的y坐标
int y_cord=(int)event.getRawY();
//将滚动条限制在屏幕中心+-150之间
如果(y_线>(显示高度为2+150))
y_线=显示高度2+150;
如果(y_-cord您必须使用setContent(R.layout.your_-layout);则在创建

像这样

public void onCreate(Bundle savedInstanceState) 
{
        super.onCreate(savedInstanceState);
        //mGUIView = (RelativeLayout) getLayoutInflater().inflate(R.layout.scan, null);
        setContent(R.layout.your_layout);
        scroller = (ImageView) mGUIView.findViewById(R.id.scroller);
        scrollerBg = (ImageView) mGUIView.findViewById(R.id.scrollerBg);
}

我猜错误在'R', 您所需要做的就是导入您的包。R

范例

...    
import com.yourpackage.yourappname.R; //Import this

@Override
public void onCreate(Bundle savedInstanceState) {
    MetaioCloudPlugin.startJunaio(null, getApplicationContext());
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainactivity);
...

然后它应该可以正常工作:D

我以前遇到过同样的问题。我通过清除缓存、数据并从设备上卸载应用程序来解决它。在我将应用程序重新发布到测试设备后,它就可以正常工作了。也许你可以试试。

按钮在哪里。你能发布整个代码吗看不到膨胀的xml被添加到活动的何处Hi code added..请看..谢谢,我已经有了导入声明..我使用的是metaio sdk而不是cloud plugin..谢谢.还有什么建议哪一行是正确的错误吗?你可以通过logcat查看..数据在任何地方都没有错误.logcat没有显示任何内容.对ggle只是不起作用,然后发布主java的所有代码,以及您想具体隐藏哪两个图像?很抱歉延迟回复…无论如何,可以删除mGuiView,只需使用findviewbyid进行实验。。。