有没有办法在android xml文件中定义9补丁drawable?我问的原因是,当你将一个缩放动画应用到一个可绘制的笔画上时,笔画看起来会变粗.我想让笔画保持与动画播放相同的大小......
我想在LayerDrawable中使用两个九个补丁
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/solid">
<nine-patch android:src="@drawable/button_header_solid" android:dither="true" />
</item>
<item android:id="@+id/transparent">
<nine-patch android:src="@drawable/button_header_transparent" android:dither="true" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
似乎只有第一层被拉伸而第二层保持不变.
两个图像都具有与.png相同的大小,并且具有相等的可伸展和填充区域.
问题是:我们是否允许使用多个9补丁(在一个层列表中)或只允许一个?
谢谢.
有一个java.lang.ClassCastException当我试图让安装的应用程序图标.
这是我的代码.
public Bitmap getAppIcon(String path) {
PackageInfo pi = pm.getPackageArchiveInfo(path, 0);
pi.applicationInfo.sourceDir = path;
pi.applicationInfo.publicSourceDir = path;
Drawable icon = pi.applicationInfo.loadIcon(pm);
Bitmap APKicon = ((BitmapDrawable) icon).getBitmap();
return APKicon;
}
Run Code Online (Sandbox Code Playgroud)
在哪里,pm是
PackageManager pm = getPackageManager();
Run Code Online (Sandbox Code Playgroud)
并且显示的错误LogCat是
Caused by: java.lang.ClassCastException: android.graphics.drawable.NinePatchDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮助我.
我想在Android上创建一个闪屏,中间有一个小徽标,但徽标在更大的设备上拉伸.我以为我可以使用9补丁图像,但似乎9补丁图像与我试图达到的内容相反.

这是必须在中间的徽标.

这是我将图像设置为9补丁时得到的结果.中心伸展,角落完好无损.我需要反对.我需要一个9补丁,可以定义一个总是以正确的1:1比例显示的中心区域,以及左,右,上和下的边框区域,如果图像小于屏幕,可以拉伸.
我怎样才能做到这一点?有无9补丁.
为某些视图设置背景的最佳方法是什么?例如2个背景变体:
那么哪种变体会更好,九补丁或可绘制的xml资源?
performance android nine-patch xml-drawable android-drawable
在9patch png中,其四边有黑色边缘,但从左到右和从上到下通常存在差异.为什么?这种差异如何影响?
我试图基于textview创建像控件一样的toast,我发现textview的非常奇怪的行为,以防它有九个补丁drawable作为背景.
这是xml定义:
<by.pplware.view.QuickInfo
android:id="@+id/quickinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:padding="20px"
android:textSize="20px"
android:textStyle="bold"
android:typeface="serif"
android:background="#FFFF0000"
/>
Run Code Online (Sandbox Code Playgroud)
这是带有彩色背景的textview:

这是带有drawable背景的textview:

据我了解,在九个补丁的情况下,android make padding透明,并使用drawable仅作为文本的背景.但我想在填充九层背景的区域中加入填充.
这个问题有什么解决方案吗?
我有一个列表视图结构,相对布局使用交替的背景图像的奇数/偶数元素.我试图通过计算位置动态设置背景可绘制.它与普通的位图工作得很好.但是当我尝试使用ninepatch图像时,它会破坏UI,所有元素都会失真.我究竟做错了什么?可能是如何创建ninepatch图像,或者与普通位图相比,使用9patch图像有不同的方式.
我的列表视图XML就是这样的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/id01"
android:background="@drawable/my_9patch_bg_image">
<ImageView />
<RelativeLayout>
<ImageView />
<TextView />
<TextView />
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
可能是这里的解决方案可能适用于我的问题.虽然我必须尝试它,但确切的.
我需要NinePatchDrawable的帮助:
我的应用程序可以从网络下载主题.除了9-Patch PNG之外,几乎所有的工作都很好.
final Bitmap bubble = getFromTheme("bubble");
if (bubble == null) return null;
final byte[] chunk = bubble.getNinePatchChunk();
if (!NinePatch.isNinePatchChunk(chunk)) return null;
NinePatchDrawable d = new NinePatchDrawable(getResources(), bubble, chunk, new Rect(), null);
v.setBackgroundDrawable(d);
d = null;
System.gc();
Run Code Online (Sandbox Code Playgroud)
getFromTheme()从SD卡加载位图.9-Patch PNG已经编译,这意味着它们包含了所需的块.
我将Bitmap转换为NinePatchDrawable对象的方式似乎正在起作用,因为图像是可拉伸的,而且我画了它.
唯一不起作用的是填充.我已经尝试将填充设置为视图,如下所示:
final Rect rect = new Rect(); // or just use the new Rect() set
d.getPadding(rect); // in the constructor
v.setPadding(rect.left, rect.top, rect.right, rect.bottom);
Run Code Online (Sandbox Code Playgroud)
d.getPadding(rect)应该用填充从块中填充变量rect,不应该吗?但事实并非如此.
结果:TextView(v)不显示9-Patch图像的内容区域中的文本.每个坐标中的填充都设置为0.
谢谢阅读.
我正试图在Android中制作一个标注图形.我没有嫁接使用9-patch-drawable的想法,但我认为这是正确的方法.我本质上是想在底部制作一个带有小结点的按钮.无论内容的大小如何,我都希望将小块置于中心位置.以下是一些示例图形,显示了我的目标:

有没有办法使用9-patch drawable保持底部小结点居中?
android ×10
nine-patch ×10
drawable ×2
bitmap ×1
graphics ×1
listview ×1
padding ×1
performance ×1
textview ×1
xml ×1
xml-drawable ×1