我有一个ListView,其项目具有平铺背景.为此,我使用以下drawable xml:
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat" />
Run Code Online (Sandbox Code Playgroud)
通常,这是有效的.但是,有时,src drawable不会平铺,而是拉伸以填充整个列表项.(我有几个不同的瓷砖,我把它们混合在一个ListView中.如果有拉伸而不是平铺,那么它永远不会同时存在于所有这些中,因为这是值得的.)
我也尝试添加android:dither="true"到那个xml,因为我读到某个地方没有它可能会有bug.这并没有改变任何事情.
有没有人有同样的问题?你怎么修好它的?
在此早期的问题中,OP询问了以下问题:
给定一个矩形网格,其中一些正方形是空的,有些正方形被填充,可以放入世界的最大数量的2x1多米诺骨牌是这样的,没有两个多米诺骨牌重叠,没有多米诺骨牌在填充的正方形上面?
(相当漂亮!)这个问题的答案认识到这相当于在特殊构造的图中找到最大的二分匹配.在此图中,每个空方块都有一个节点,该节点通过边链接到每个邻居.然后,每个多米诺骨牌对应于图中的边缘,使得其端点不被任何其他边缘覆盖.因此,不共享顶点(匹配)的任何边缘集合对应于多米诺骨牌的排列,反之亦然.
我的问题是对前一个问题的概括:
给定一个矩形网格,其中一些正方形是空的而一些是填充的,那么可以放入世界的M x N多米诺骨牌(对于给定的M和N)的最大数量是这样的,没有两个多米诺骨牌重叠并且没有多米诺骨牌在顶上一个满满的广场?
我无法看到如何将其转换为匹配问题,如前一种情况所做的那样.但是,我也没有看到为什么这个问题会立即成为NP难的特殊原因,因此可能存在一个多项式时间解决问题的方法.
有没有一种有效的算法来解决这个问题?或者是否有人有减少表明这个问题是NP难?
非常感谢!
切换到平铺窗口管理器我有点矛盾.我不久前做了这个开关,我真的很喜欢它,但是对于其他我不喜欢的东西.所以我最终切换回了我可靠的KDE.
但是,当我在我的虚拟桌面之间切换时,我不禁想到如果我能在KDE中拥有一个合适的平铺窗口管理器会有多棒.我知道kwin有一些平铺选项,但恕我直言他们很糟糕!我想要类似于i3的东西,所有的窗户装饰都被完全剥离了.
然后我更进一步思考这个想法,并开始思考如果我能够配置特定的虚拟桌面以获得这个平铺WM而其他人将拥有良好的旧浮动kwin行为,那将是多么令人难以置信的令人敬畏.
所以我问,有人知道这么棒吗?还有什么东西与此类似吗?如果没有这种特定于虚拟桌面的WM功能,即使只是某种方式在KDE中进行适当的平铺窗口管理?
我也很想听听那些对整个窗口管理概念有深刻理解的人,以及为什么如果事实如此,这是不可能的.是什么让它难以实施?
在我的日常工作中,我使用了很多vim作为我的编辑器和平铺窗口管理器很棒.在我看来,两者都是很好的工具.我不喜欢什么真棒(和其他多个平铺窗口管理器)是令人不愉快的键组合,如WIN+ ANY OTHER KEY.
是否有任何平铺窗口管理器,其行为类似于vim的普通模式和插入模式?在那里你可以点击windows-key进入window-manager模式(比如vims普通模式),做一些窗口安排和移动的东西,再次点击windows-key或其他一些键重新进入"插入模式"活动窗口捕获每个击键?
如果没有,是否可以让win-key或任何其他修饰符键表现得像Capslock?这样你就可以保持Win模式,直到你再次点击Windows键?
需要说明的是:我并不是指一个窗口管理器,它的行为类似于vims窗口管理,但它有两种不同的模式,只需按一下键盘即可实现.一种模式,其中每次击键是窗口管理命令,另一种模式是将每次击键发送到当前活动窗口.
我已经看到了这个问题,但我认为它被误解和关闭而没有任何有意义的答案.
我正在寻找一种有效的算法来进行字符串平铺.基本上,你给出一个字符串列表,比如BCD,CDE,ABC,A,产生的瓷砖字符串应该是ABCDE,因为BCD与对齐CDE屈服BCDE,然后将其与对齐ABC得到最终ABCDE.
目前,我使用的是一种略显天真的算法,其工作原理如下.用随机对字符串的开始,说BCD和CDE,我用下面的(在Java中):
public static String tile(String first, String second) {
for (int i = 0; i < first.length() || i < second.length(); i++) {
// "right" tile (e.g., "BCD" and "CDE")
String firstTile = first.substring(i);
// "left" tile (e.g., "CDE" and "BCD")
String secondTile = second.substring(i);
if (second.contains(firstTile)) {
return first.substring(0, i) …Run Code Online (Sandbox Code Playgroud) 我想创建一个'方格纸'外观我正在通过画布绘制的位图,并试图找出最佳方法来实现这一点.
我无法将包含方格纸背景的源位图传递给Canvas构造函数,因为我通过.lockCanvas()调用在SurfaceView中获取Canvas.
我试过的一些解决方案:
我已经尝试在我的SurfaceView的Thread.run()中实现这个解决方案,但我相信的问题是当BitmapDrawable转换为Bitmap时...它会丢失平铺属性.
canvas = mSurfaceHolder.lockCanvas(null); BitmapDrawable TileMe = new BitmapDrawable(BitmapFactory.decodeResource(getResources(),R.drawable.editor_graph)); TileMe.setTileModeX(Shader.TileMode.REPEAT); TileMe.setTileModeY(Shader.TileMode.REPEAT);
位图b = TileMe.getBitmap(); canvas.drawBitmap(b,0,0,null);
如果我使用Canvas.drawBitmap方法将目标RectF作为参数,看起来位图将被平铺以填充RectF ...但是如何可靠地声明填充整个视图区域的RectF?
任何想法如何实现这一目标?
当它以整数值(1,2,3等等)转换时,瓷砖之间没有黑线,看起来很好.但当它被转换为非整数(1.1,1.5,1.67)时,每个瓷砖之间会有一些小的黑线(我想象它是由于子像素渲染,对吧?)......它看起来并不漂亮= P
所以我该怎么做?
这是我的图像加载代码,顺便说一下:
bool Image::load_opengl() {
this->id = 0;
glGenTextures(1, &this->id);
this->bind();
// Parameters... TODO: Should we change this?
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, this->size.x, this->size.y,
0, GL_BGRA, GL_UNSIGNED_BYTE, (void*) FreeImage_GetBits(this->data));
this->unbind();
return true;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
Run Code Online (Sandbox Code Playgroud)
和:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
Run Code Online (Sandbox Code Playgroud)
这是我的图像绘制代码:
void Image::draw(Pos pos, CROP crop, SCALE scale) {
if (!this->loaded || this->id == 0) {
return; …Run Code Online (Sandbox Code Playgroud) 我有一个数组代表长方体中的点.它是一维数组,使用以下索引函数实现3维:
int getCellIndex(int ix, int iy, int iz) {
return ix + (iy * numCellsX) + (iz * numCellsX * numCellsY);
}
Run Code Online (Sandbox Code Playgroud)
域中的单元数是:
numCells = (numX + 2) * (numY + 2) * (numZ + 2)
Run Code Online (Sandbox Code Playgroud)
其中numX/numY/numZ是X/Y/Z方向上的单元格数.每个方向的+2是在域的外部创建填充单元.每个方向的单元格数由下式给出:
numX = 5 * numY
numZ = numY/2
numY = userInput
Run Code Online (Sandbox Code Playgroud)
对于每个单元格,我想基于它的邻居值(即模板)计算该单元格的新值,其中它的邻居在上方,下方,左侧,右侧,前方和后方.但是,我只想对不坏的单元格进行此计算.我有一个布尔数组来跟踪一个单元格是坏的.这就是计算目前的样子:
for(int z = 1; z < numZ+1; z++) {
for(int y = 1; y < numY+1; y++) {
for(int x = 1; x < numX+1; x++) {
if(!isBadCell[ getCellIndex(x,y,z) ] { …Run Code Online (Sandbox Code Playgroud) 每次我们向基于OpenLayers的网站添加新图层(主要由GeoServer服务器提供的数据)时,我们都会讨论是使用单个图块还是平铺图像.
我们评估的一些参数如下:
使用平铺方法我们得到:
使用单瓦方法我们得到:
我们在图层中进行了大量的数据编辑,因此图块缓存可能效率不高.
在平铺方面有没有最好的做法?
朝着无限快速的硬件和无限数据连接的方向发展,讨论变得无关紧要,但您认为哪种配置最令用户满意?
您将获得一组使用3"×1"和4.5"×1"块构建面板的块.
为了结构完整性,块之间的空间不得排列在相邻的行中.
构建7.5"×1"面板的方法有2种,构建7.5"×2"面板的方法有2种,构建12"×3"面板的方法有4种,构建27"×5"面板的方式有7958种. "小组.有多少种方法可以构建48"×10"面板?
这是我到目前为止所理解的:
块3 x 1和4.5 x 1
我已经使用组合公式来找到可以在这个尺寸的面板中排列2个块的所有可能组合
C =选择 - > C(n,k)= n!/ r!(nr)!一次在r组合n组
面板:7.5 x 1 = 2种方式 - >
1(3 x 1块)和1(4.5 x 1块) - >仅使用2个块 - > 2 C 1 = 2路
面板:7.5 x 2 = 2种方式
我也在这里使用过组合
1(3 x 1块)和1(4.5 x 1块) - > 2 C 1 = 2路
面板:12 x 3面板= 2种方式 - >
2(4.5 x 1块)和1(3 x 1块) - > 3 C 1 = 3路
0(4.5 x …