一个有希望的快速问题,但我似乎无法找到任何示例......我想View通过a 将多行文本写入自定义Canvas,并且onDraw()我有:
...
String text = "This is\nmulti-line\ntext";
canvas.drawText(text, 100, 100, mTextPaint);
...
Run Code Online (Sandbox Code Playgroud)
我希望这会导致换行,但相反,我会看到神秘的角色\n.
任何指针赞赏.
保罗
我们有一个Angular + Ionic + Cordova项目,有多个开发人员,我们想管理cordova插件依赖项.我们正在使用Cordova CLI 5+,并且在手动运行安装命令(例如cordova plugin add cordova-plugin-camera)时,会cordovaPlugins在package.json文件的部分添加一个新行.这是成品的样子:
"cordovaPlugins": [
"cordova-plugin-camera",
"cordova-plugin-console",
"cordova-plugin-contacts",
"cordova-plugin-device",
"cordova-plugin-dialogs",
"cordova-plugin-file",
"cordova-plugin-geolocation",
"cordova-plugin-media",
"cordova-plugin-media-capture",
"cordova-plugin-network-information",
"cordova-plugin-splashscreen",
"cordova-plugin-statusbar",
"cordova-plugin-vibration",
"com.ionic.keyboard"
]
Run Code Online (Sandbox Code Playgroud)
这一切都很棒,除了我们找不到任何方式让dev#2到npm安装这些插件 - 相反,他必须单独运行命令,然后添加一个重复的行package.json,弄脏存储库.我们确信必须有一个命令来安装这些,但找不到它.任何人都能解释一下吗?
一个简单的问题,与应用程序写入内部存储器时的默认"主页"目录有关.默认情况下,创建的所有文件都由OS(2.2)放置在:
/data/data/your.package/files
Run Code Online (Sandbox Code Playgroud)
在读取文件时,使用相同的默认值,通过openFileInput(),保持适当的上下文openFileOutput().但是如果我需要检查文件存在,例如,使用File类,我需要在构造函数中指定整个路径.
我看到有Environment.getDataDirectory()(返回/data),Environment.getRootDirectory()(返回/system)等,但没有任何东西与获取应用程序的'home'目录有关.
这不是一个大问题,但我宁愿不硬编码我的App for File使用的完整路径(比如包名称更改,比如未来操作系统版本中的路径更改),如果有某种方法可以引用应用程序的"主页"目录以编程方式.
我有一个绘图应用程序需要大约2-5秒来加载复杂图纸的绘图(通过一个完成AsyncTask).为了获得更好的用户体验,在此期间我将应用程序目录中存储的PNG版本作为一个闪存ImageView,并在Activity构造函数中显示加载ProgressBar调用setContentView():
<?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>
Run Code Online (Sandbox Code Playgroud)
当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>
Run Code Online (Sandbox Code Playgroud)
当我使用一个简单的Canvas模型时,这非常有效,因为自定义DrawingCanvas View会onDraw()在向用户显示之前将绘图绘制到初始屏幕上,但现在使用SurfaceView带有绘图循环,我看到闪烁的布局,然后加载图形时,黑屏大约一秒钟,最后是新的DrawingCanvas.
我假设原因与绘制循环线程的启动时间有关,并且我已经离开了我onDraw()的内部SurfaceView,并且它被调用,但是可用的画布onDraw()似乎没有绘制到SurfaceView.我也尝试在XML中设置纯色背景,希望至少能够显示白色背景,但这些背景似乎永远不会生效,甚至从代码设置它. …
所以我已经阅读了Romain Guy 关于设置Window背景和深刻表现的博客文章,并试图模仿它.这是一个简单的解决方案,并不确定为什么我不能让这个工作,但活动只是拒绝接收定向背景.
我有一个ListView,onListItemClick启动一个新的Activity,需要3-5秒才能完全加载.当用户在等待时,我想绘制一个windowBackground,以便他们在实际准备好之前"看到"该活动.这是我的代码:
针对已启动活动的AndroidManifest代码段:
<activity
android:name=".activity.EditorActivity"
android:screenOrientation="portrait"
android:windowBackground="@drawable/background_editor">
Run Code Online (Sandbox Code Playgroud)
EditorActivity的XML布局:
<?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">
<TextView
android:id="@+id/editor"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="Editor" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
最后,drawife在Manifest中设置,background_editor.xml:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/editor_bg"
android:tileMode="repeat" />
Run Code Online (Sandbox Code Playgroud)
editor_bg是一个位于drawable文件夹中的.png文件.
最终结果是EditorActivity被启动,我看到的是默认的黑色背景,其中"Editor"文本显示为白色(我添加了以测试XML文件是否正确加载).
我也尝试通过android:background ="@ android:color/transparent"将FrameLayout和TextView的背景设置为透明,想想也许他们默认为黑色背景,但没有运气.
已经很长一段时间了,我确信我错过了一些简单的事情...我在这里犯的任何明显的错误?
这似乎是一个常见的错误,但对于我的生活,我无法弄清楚这一点.
我在MySQL中有一组InnoDB用户表,通过外键绑定在一起; 父user表和一组存储电子邮件地址,操作等的子表.这些子user表都通过外键与父表绑定uid,并且所有父键和子键都是int(10).
所有子表都有一个uid值,其外键约束指向user.uid,并设置为ON DELETE CASCADE和ON UPDATE CASCADE.
当我从中删除用户时user,将删除所有子约束条目.但是,当我尝试更新user.uid值时,会导致以下错误,而不是将uid更改级联到子表:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`accounts`.`user_email`, CONSTRAINT `user_email_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE)
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,我必须在这里遗漏一些明显的东西.删除键约束user_email并尝试更新值user导致相同的错误,但对于下一个按字母顺序排列的user子表,所以我不认为它是特定于表的错误.
编辑:
添加以下结果SHOW ENGINE INNODB STATUS:
------------------------
LATEST FOREIGN KEY ERROR
------------------------ …Run Code Online (Sandbox Code Playgroud) 我有一个绘图应用程序,用户可以用手指画线,调整颜色,厚度等.当用户绘图时,我将集合的X/Y点MotionEvent转换为SVG路径,以及创建Android路径和然后通过Canvas将Android Path's绘制到屏幕上,并将SVG Path提交到应用程序的数据库.
我正在关注FingerPaint中使用的模型,因为"进行中"行是通过重复调用invalidate()(以及因此onDraw())动态绘制的,一旦行完成并且新行开始,前一行(s) )onDraw()从底层抽取Canvas Bitmap,进行中的线再次产生重复的重绘.
这在此应用程序中工作正常 - 直到您开始旋转底层Bitmap以补偿设备旋转,支持在绘图表面上"放大"并因此必须缩放底层Bitmap等的能力.例如,设备旋转和缩放的图形,当用户绘图时,我们需要在onDraw()中缩放和旋转我们的位图,这绝对是爬行的.
我看了一下SurfaceView,但由于这仍然使用相同的Canvas机制,我不确定我会看到明显的改进......所以我的想法转向OpenGL.我已经读过某个地方,OpenGL可以基本上"免费"进行旋转和缩放,甚至可以看到未来版本中可能消失的谣言(第三条评论)Canvas.
从本质上讲,我在CanvasOpenGL解决方案之间有点困难......我有一个2D绘图应用程序,Canvas在一个状态下似乎完全适合模型,因为没有像游戏那样不断的重新绘制(例如当用户没有绘图我不需要任何重新绘图),但是当用户绘图时,我需要最大的性能来完成表面上一些越来越复杂的事情......
欢迎任何想法,指示和建议.
我已经写了一些Android应用程序,并且总是声明一个起点Activity:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
如果我可以使用一个在设置prefs等Application之后调用第一个应用程序来启动我的应用程序,这对于确定一些全局方法,静态,共享首选项等是Activity很好的onCreate(),但是我还没有找到任何示例这个设计模式......当我在代码中尝试这个时,我得到一个ClassCastException:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// do stuff (prefs, etc)
// start the initial Activity
Intent i = new Intent(this, InitialActivity.class);
startActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
InitialActivity.class确实是一个Activity可以正常工作,如果我设置它MAIN,但尝试从它启动它MyApplication被声明MAIN生成错误.可能是一个非常愚蠢的问题,但我是否解决了这一切?
谢谢,
保罗
已经在SO上阅读了很多相关问题,并通过Android文档和源代码查看了这一点,但是我很难过,尽管listSelector似乎只对所选项目应用样式,但是我没有震惊......
我在main.xml中定义了Listview:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdgeLength="5dp"
android:divider="#000000"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:singleLine="false"
android:text="@string/message_list_empty" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
引用的listSelector在这里(主要借用SDK中的默认Android状态列表:/android/platforms/android-8/data/res/drawable/list_selector_background.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- the window has lost focus, disable the items -->
<item
android:state_window_focused="false"
android:drawable="@drawable/shape_row_disabled" />
<!-- the list items are disabled -->
<item
android:state_enabled="false"
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/shape_row_disabled" />
<item
android:state_enabled="false"
android:state_focused="true"
android:drawable="@drawable/shape_row_disabled" />
<item
android:state_enabled="false"
android:drawable="@drawable/shape_row_disabled" />
<!-- the list items are enabled and being pressed -->
<item …Run Code Online (Sandbox Code Playgroud) 我们使用git来管理我们应用程序的代码库,并且遇到了我尚未遇到的情况,但我认为这种情况很常见.
我们想暂时删除一个功能,然后在将来的某个时候重新添加它.我试图想象支持这个的分支结构,或者我们应该做一些简单的事情,比如从代码中删除该功能,并在准备好重新添加它时,从提交历史中重新创建它.
在处理这种情况方面,有人能指出我正确的方向吗?
android ×7
background ×2
canvas ×1
foreign-keys ×1
git ×1
listview ×1
mysql ×1
npm ×1
opengl-es ×1
state ×1
surfaceview ×1