Tag: android ui

在非UI线程上实例化视图

我知道UI元素(视图层次结构)可能只能从UI线程中操作。 对于后台操作,可以使用AsyncTask,它提供事件处理程序以访问UI线程。 简而言之,是否允许在非UI线程中实例化View(与getApplicationContext() )? 此自定义View后代 – 一旦实例化 – 将从UI线程添加到视图层次结构中。 所以只有构造函数调用是在Asynctask.doInBackground() ; 它附加( addView(…) )到Activity的根布局层次结构仍然在UI线程中完成。 详情如下: public MyView extends View { public MyView(Context context) { … } … } 我制作了一个自定义视图,重写了onDraw(…)等。 当用户单击我的主Activity中的某个MenuItem时,会创建另一个Activity(MyOtherActivity)并显示哪个屏幕正好是MyView 由于MyOtherActivity的屏幕必须立即显示,我在AsyncTask中预先实例化MyView,而用户在主Activity中的其他位置(即他还没有点击那个MenuItem)。 MyView引用存储在静态数据成员中。 调用MyOtherActivity.onCreate() ,其构造函数代码从静态获取MyView,并通过addView(…)将其添加到其布局根层次结构中。 (我知道静态变量可能会引入内存泄漏,所以一旦不需要,我就把它设置为null 。) MyView是否在另一个线程中实例化(并在其构造函数中获取getApplicationContext()的返回值getApplicationContext()是不是问题(可能会引入意外问题)?

在单一布局中支持android中的多个屏幕

我已经按照以下链接,以便我的应用程序可以支持不同的屏幕尺寸: 在android中支持多个屏幕 该解决方案完美无缺。 但我担心的是,当我有一个拥有8-9个屏幕的android应用程序时,那意味着我将拥有8-9个不同的.xml布局文件。 现在通过文件夹分叉来支持所有屏幕,这意味着我已经管理了几乎五十多个xml文件的布局,并且为了简单地更改UI,我必须转到所有文件夹并在xml文件中实现该更改。 那么有没有更好的方法,我的意思是这样的布局,可以自己调整控件或类似的东西?

如何在Android中使用两种不同的字体大小的按钮文字?

我如何实现ImageButton或Button的按钮背景,其中包含2个textview,每个使用不同的字体大小? 我不能使用静态图像作为背景,我需要使用xml或以编程方式实现此目的。 这是一个数字小键盘,它带有一个数字值和一组字母,每个字母使用不同的字体大小,需要设置为按钮文本。 以下是我脑中弹出的一些建议但似乎有局限性,因为我想重用UI组件并避免重复代码。 创建一个包含2个文本字段的布局xml,并将其设置为按钮上的背景。 但是,如何获取这些textview字段的引用以在MyActivity.java中设置它们的值? 使用分层列表? 文本视图的问题参考仍然相同 或者创建第1步中提到的自定义视图和膨胀布局。此解决方案可以解决我的问题。 此UI要求是否存在任何其他解决方案? 谢谢。