我正在尝试确定一些UI元素的实际像素尺寸!
这些元素从.xml文件中膨胀,并使用dip宽度和高度进行初始化,以便GUI最终支持多个屏幕大小和dpi(如android规范所推荐).
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="150dip"
android:orientation="vertical">
<ImageView
android:id="@+id/TlFrame"
android:layout_width="110dip"
android:layout_height="90dip"
android:src="@drawable/timeline_nodrawing"
android:layout_margin="0dip"
android:padding="0dip"/></LinearLayout>
Run Code Online (Sandbox Code Playgroud)
此前的xml表示一帧.但是我在这里描述的水平布局中动态添加了许多:
<HorizontalScrollView
android:id="@+id/TlScroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_margin="0dip"
android:padding="0dip"
android:scrollbars="none"
android:fillViewport="false"
android:scrollbarFadeDuration="0"
android:scrollbarDefaultDelayBeforeFade="0"
android:fadingEdgeLength="0dip"
android:scaleType="centerInside">
<!-- HorizontalScrollView can only host one direct child -->
<LinearLayout
android:id="@+id/TimelineContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_margin="0dip"
android:padding="0dip"
android:scaleType="centerInside"/>
</HorizontalScrollView >
Run Code Online (Sandbox Code Playgroud)
定义为在我的java代码中添加一个框架的方法:
private void addNewFrame()
{
LayoutInflater inflater = (LayoutInflater) _parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.tl_frame, null);
TextView frameNumber = (TextView) root.findViewById(R.id.FrameNumber);
Integer val = new Integer(_nFramesDisplayed+1); //+1 …Run Code Online (Sandbox Code Playgroud) android android-widget android-ui android-layout android-xml
我正在尝试生成一个frambuffer对象,并使用NDK(r5b)在本机android应用程序中使用模板.目标设备正在运行froyo 2.2,支持OpenGL ES 2.0.
所以,我一直在我的c ++本机库中编写大量的gl代码,除此之外没有遇到任何问题.我似乎无法使它工作.
这是帧缓冲区创建的代码片段.完美性很好,但屏幕仍然完全黑色.这就像我正在创建的fbo并没有真正绑定到应用程序的Java部分创建的gl表面.我的应用程序代码的其余部分都很好,如果我删除fbo创建和绑定,一切都很好,除了我没有我的应用程序所需的模板工作.
GLint backingWidth = 1024;
GLint backingHeight = 1024;
//Create the FrameBuffer and binds it
glGenFramebuffers(1, &_defaultFramebuffer);
checkGlError("glGenFramebuffers");
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
checkGlError("glBindFramebuffer");
//Create the RenderBuffer for offscreen rendering // Color
glGenRenderbuffers(1, &_colorRenderbuffer);
checkGlError("glGenRenderbuffers color");
glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderbuffer);
checkGlError("glBindRenderbuffer color");
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, backingWidth, backingHeight);
checkGlError("glRenderbufferStorage color");
//Create the RenderBuffer for offscreen rendering // Depth
glGenRenderbuffers(1, &_depthRenderbuffer);
checkGlError("glGenRenderbuffers depth");
glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderbuffer);
checkGlError("glBindRenderbuffer depth");
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backingWidth, backingHeight);
checkGlError("glRenderbufferStorage depth");
//Create the RenderBuffer for offscreen rendering // Stencil
glGenRenderbuffers(1, …Run Code Online (Sandbox Code Playgroud) 我有一个包含很少其他子层的CALayer(实际上是CATextLayer)
当用户在ipad上执行常规手势但我似乎无法正常工作时,我想在该图层上应用一些转换.使用CALayer的目的是仅将转换应用于该层,以便使用相同的转换同时影响我的所有子textLayer.
发生的事情是转换似乎在前一个位置和当前位置之间闪烁.我并没有真正得到可能存在的问题......例如,当我做一个2指平移手势时,CaTextLayer会在我的手势中一直闪烁,最后它们都被正确放置在新的平移位置.
所以一切似乎工作得很好,除了闪烁的东西困扰我很多.
我需要设置一些我不知道的属性吗?我在想它可能与边界和框架有关......
这是我创建CATextLayer的方法(这只在创建时完成一次,并且正常工作):
_textString = [[NSString alloc] initWithString: text];
_position = position;
attributedTextLayer_ = [[CATextLayer alloc] init];
attributedTextLayer_.bounds = frameSize;
//.. Set the font
attributedTextLayer_.string = attrString;
attributedTextLayer_.wrapped = YES;
CFRange fitRange;
CGRect textDisplayRect = CGRectInset(attributedTextLayer_.bounds, 10.f, 10.f);
CGSize recommendedSize = [self suggestSizeAndFitRange:&fitRange
forAttributedString:attrString
usingSize:textDisplayRect.size];
[attributedTextLayer_ setValue:[NSValue valueWithCGSize:recommendedSize] forKeyPath:@"bounds.size"];
attributedTextLayer_.position = _position;
Run Code Online (Sandbox Code Playgroud)
这就是我将它们添加到我的Super CALayer中的方法
[_layerMgr addSublayer:t.attributedTextLayer_];
[[_drawDelegate UI_GetViewController].view.layer addSublayer:_layerMgr];
Run Code Online (Sandbox Code Playgroud)
以下是我如何应用我的转换:
_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);
android ×2
android-ndk ×1
android-ui ×1
android-xml ×1
calayer ×1
catextlayer ×1
framebuffer ×1
ipad ×1
stencils ×1