我试图开发自己的相机活动,但我有一个问题,我无法解决… 我想要的,是一个非常类似于Instagram的相框,这是我得到: 当我应该得到这样的东西: 和… 当我应该得到像这样的东西: 我想我只是使用SurfaceView和Camera预览 Camera.Parameters parameters = camera.getParameters(); camera.setDisplayOrientation(90); 和自定义SurfaceView: public class SquaredSurfaceView extends SurfaceView { private int width; private int height; public SquaredSurfaceView(Context context) { super(context); } public SquaredSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); } public SquaredSurfaceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int […]
我正在尝试实施新的Android Google Maps API(v2)。 但是,它似乎不适合与SlidingMenu 。 如您所知, MapFragment实现基于SurfaceView 。 问题是SurfaceView不喜欢移动它 – 我的意思是把它放在可移动的视图: ViewPager , ScrollView , ListView , 或上述的SlidingMenu 。 当你移动它时,它会在原来的像素位置留下一个黑洞。 看起来像这样 这个问题可以通过在SurfaceView上指定一个透明的背景或者在它上面放置一个透明的View来部分解决。 我只是不能确定如果只为我的结果是不可接受的,或者如果我有一个不同的问题,使它看起来如何。 要了解它的外观,请观看本video 。 (抱歉,质量,但问题可以很容易地看到) 当一个普通的列表视图(橙色屏幕)被拉开,同时打开SlidingMenu ,animation是光滑的,很好。 但是一旦MapFragment出现, MapFragment就会出现一些奇怪的刷新/闪烁/同步问题。 testingHTC One S和三星Galaxy ACE。 我的超级疯狂的解决办法是:每次开始animation时,都要截取MapFragment (应该可以使用SurfaceView),并在animation期间放置它。 但是我真的不知道该怎么做…… 以地图的截图是不可能的 ,但也许有人会从中得到灵感。 或者也许禁用其他方式重新绘制地图,我不知道。 更新: find了这个 。 看起来,SurfaceView可以改变为TextureView来消除这些限制。 但是由于MapFragment是基于SurfaceView的,我不知道是否可以实现。 另一个更新看来,这个问题已经在设备4.1+上解决了。 他们只是使用TextureView。 但在较低版本中,我们仍然需要使用解决方法。
我得到这个错误。 我尝试了许多解决scheme,但我coudnt解决这个问题。 帮我! 我需要将表面视图和button添加到使用片段的活动中。 CamActivity.java: public class CamActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cam); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if(fragment == null) { fragment = new CamFragment(); fm.beginTransaction() .add(R.id.fragmentContainer, fragment) .commit(); } } } CamFragment.java: public class CamFragment extends Fragment { private static final String TAG = […]
我一直在试图实现一个需要在表面上预览相机的应用程序。 正如我所看到的,活动和表面生命周期都包含以下几个状态: 当我第一次启动我的Activity: onResume()->onSurfaceCreated()->onSurfaceChanged() 当我离开我的Activity: onPause()->onSurfaceDestroyed() 在这个scheme中,我可以在onPause/onResume和onSurfaceCreated()/onSurfaceDestroyed()做相应的调用,如打开/释放摄像头和启动/停止预览。 它工作正常,除非我locking屏幕。 当我启动应用程序,然后locking屏幕,稍后解锁,我看到: onPause() – 在屏幕locking后没有其他任何事情 – 然后解锁后的onResume()之后没有表面callback。 实际上,在按下电源button并且屏幕打开之后调用onResume() ,但locking屏幕仍然处于活动状态,所以在活动变得可见之前。 通过这个scheme,解锁后我得到一个黑屏,并且不会调用表面callback。 这是一个代码片段,不涉及实际的相机工作,但SurfaceHoldercallback。 即使在手机上有这个代码,上面的问题也会被重现(当您按下“返回”button时,以正常顺序调用callback,但当您locking屏幕时,callback会丢失): class Preview extends SurfaceView implements SurfaceHolder.Callback { private static final String tag= "Preview"; public Preview(Context context) { super(context); Log.d(tag, "Preview()"); SurfaceHolder holder = getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { Log.d(tag, "surfaceCreated"); } public […]
我一直在努力在Android上制作自定义相机活动,但是在旋转相机时,表面视图的纵横比会变差。 在我的活动中,我设置了用于保存显示相机参数的表面视图的framelayout。 //FrameLayout that will hold the camera preview FrameLayout previewHolder = (FrameLayout) findViewById(R.id.camerapreview); //Setting camera's preview size to the best preview size Size optimalSize = null; camera = getCameraInstance(); double aspectRatio = 0; if(camera != null){ //Setting the camera's aspect ratio Camera.Parameters parameters = camera.getParameters(); List<Size> sizes = parameters.getSupportedPreviewSizes(); optimalSize = CameraPreview.getOptimalPreviewSize(sizes, getResources().getDisplayMetrics().widthPixels, getResources().getDisplayMetrics().heightPixels); […]
<ImageButton android:id="@+id/previous" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/media_skip_backward" android:background="@drawable/transparent"></ImageButton> 这是我试图得到一个透明的ImageButton,以便将这些button放在SurfaceView上。 但是,Eclipse,只要我在xml中包含透明线,就给我一个项目的错误。 请帮忙。
我正在开发相机应用程序,这是我的第一个Android应用程序。 下面我添加我的应用程序屏幕截图为我想要的。 第一视图: 在这里,点击右上angularfilter图标后,我想要一个下面的视图。 第二视图: 我不知道如何得到这种types的视图。 也如何devise这种types的视图到XML部分。 我读了更多的文章,如如何打开一个单一的屏幕上的多表面视图预览,但我没有得到任何欣赏的解决scheme。 最后,select任何一个filter预览后,我想要一个上面的图像types视图。 表示所选滤镜的预览适用于相机[Surfaceview预览]。 请提供任何types的材料链接example.etc 家伙请帮助我。任何types的帮助将不胜感激..): 提前致谢
我的应用程序只提供肖像模式。 在肖像活动中,我有一个全屏的VideoView。 我想要做的是在风景模式下旋转VideoView(实际的video,videobuffer)90度。 启用活动在Lanscape模式不是一个选项。 扩展VideoView和canvas旋转将无法正常工作,因为它是一个SurfaceView而不是实际的视图。 有没有办法用videoView来实现这一点?
这是我的示例代码: package newslab.video.server; import android.app.Activity; import android.hardware.Camera; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.Button; import android.widget.TextView; public class VideoServer extends Activity implements SurfaceHolder.Callback { TextView testView; Camera camera; SurfaceView surfaceView; SurfaceHolder surfaceHolder; private final String tag = "VideoServer"; Button start, stop; /** Called when the activity is first created. */ […]
我有一个绘图应用程序需要大约2-5秒来加载绘图复杂的图纸(通过一个AsyncTask完成)。 为了获得更好的用户体验,在此期间,我将存储的PNG版本的graphics从应用程序目录中作为ImageView刷新,并在Activity构造函数中显示调用setContentView()的加载ProgressBar : <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/flash" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@color/note_bg_white" android:contentDescription="@string/content_desc_flash_img" android:focusable="false" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="6dp" android:paddingLeft="6dp" android:paddingRight="6dp" android:gravity="bottom|center_vertical"> <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:id="@+id/toolbar_progress" android:layout_width="match_parent" android:layout_height="18dp" android:gravity="bottom|center_vertical" /> </RelativeLayout> </FrameLayout> 当AsyncTask完成后,我再用新的布局调用setContentView() : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff"> <com.my.package.DrawingCanvas android:id="@+id/canvas" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:background="#ffffff" /> </RelativeLayout> 当我使用一个简单的Canvas模型时,这个工作是完美的,因为自定义的DrawingCanvas View会在显示给用户之前将绘图绘制到初始的onDraw()的屏幕上,但是现在使用带有绘制循环的SurfaceView看到闪烁的布局,然后当图纸被加载,黑屏大约一秒钟,然后最后新的DrawingCanvas。 […]