我的选项卡式应用不会通过方向更改重新显示视图.
我补充道
android:configChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)
到主标签活动和清单中的每个活动.
我在每个活动中添加了这个方法:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.active_alt);
mColorLegendBtn = (Button) findViewById(R.id.colorbtn);
mStatusView = (TextView) findViewById(R.id.celltitle1);
TextView mStatusView1 = (TextView) findViewById(R.id.celltitle2);
mStatusView1.setText(mStatusView1.getText()+"testcase1");
mStatusView.setText(mStatusView.getText()+"testcase");
initUI();
}
public void initUI() {
l1 = (ListView) findViewById(R.id.ListView01);
EfficientAdapter efficientAdapter = new EfficientAdapter(mContext);
l1.setAdapter(null);
l1.setAdapter(efficientAdapter);
}
Run Code Online (Sandbox Code Playgroud)
启动时,正确显示选项卡,列表,按钮和文本视图.当我在模拟器中更改方向时,只显示选项卡,而不显示其他任何小部件,屏幕为黑色.
我错过了什么?
我正在编写一个脚本,允许我在InDesign CS3中进行一些基本拼版,我的任务之一是打开一个对话框,允许用户选择要放置的文件.我目前正在这样做:
var file = File.openDialog("Choose a File:");
Run Code Online (Sandbox Code Playgroud)
问题似乎是通过快捷方式导航到网络驱动器时.出于某种原因,对话框将其视为文件,并从对话框返回该路径,而不是导航到文件夹位置.我假设这只是对话框中的一个错误,我最初的想法是检查返回的文件是否有正确的扩展名,如果没有,再次显示对话框,打开到返回的路径位置.但是,我似乎无法找到一种方法来改变它默认打开的位置; openDlg()只有为参数String prompt,var filter和boolean multiselect.我不熟悉Javascript,所以我不知道这是一般的解决方案,还是InDesign特有的.
编辑:如果有人感兴趣,这是我用来解决问题的最终代码:
var path = new File("~/desktop");
var file = path.openDlg("Choose File:");
while (file.alias) {
file = file.resolve().openDlg("Choose File:");
}
Run Code Online (Sandbox Code Playgroud)
基本上,检查它是否是快捷方式(别名),如果是,则解析目标并再次显示对话框.有点像一种hackish方式,但它的工作正常.可能也希望在那里添加一些空值处理,但是,如果取消对话框,则返回null.
我正在尝试以编程方式在Android上创建企业WiFi配置文件(WPA-Enterprise,WPA2-Enterprise).
我已经看到了一个相当着名的解决方案,即使用反射来实现这一目标.根据我的理解,如果必须以间接的方式完成,包括获取对被拒绝访问的API部分的访问,则必须有充分的理由.
这是否意味着Google不希望开发人员能够以编程方式配置WiFi设置?如果是这样,可能是什么原因?
我无法弄清楚如何为新的"高分辨率"手持设备生产可绘制的产品,如Galaxy Nexus,One X,Galaxy S3等,分辨率为1280x720或更高.
我总是尝试制作尽可能少的布局版本.优选地,仅需要一个但有时需要布局长且不长.并使xml足够智能以处理所有设备.但是,只有可绘制的资源能够提供所有不同的分辨率和大小,才有可能.
一切都很顺利,直到新的大手机到来,我发现它们的抽屉很小.还没有来自谷歌的xxhdpi文件夹,所以我一定做错了.
我知道这里禁止提及像素,但你仍然必须使用photoshop或其他一些基于像素的应用来制作drawables.因此,您需要知道制作这些绘图的大小.
这就是我到目前为止所做的:
xhdpi:640x960
hdpi:480x640
mdpi:320x480
ldpi:240x320
问题是,当1280x720设备从xhdpi文件夹中获取drawable时,事情开始看起来很糟糕,图像太小而且它们之间的空间太大.
你的可绘制源文件是什么?xhdpi在1028x720?这给我带来了较低分辨率的版本.
我有一个广告公司在我的脖子上呼吸,想知道为什么它看起来不像iPhone那样完美......
我正在开发一个图片编辑工具,我需要在其中合并两个图像。大多数图像编辑工具(如 gimp)使用PorterDuff 模式来合并或混合图像。我也在 android 中使用相同的方法。
由于 android 提供的 PorterDuff 模式数量有限,我无法达到预期的结果。因此,我正在考虑实施 Android 中未包含的 PorterDuff 模式(重叠、强光、柔光、颜色加深、颜色减淡)。
问题是我不知道从哪里开始。因此,在这方面的任何参考或指导都将受到高度赞赏。
我正在创建一个具有扩展和压缩状态的自定义视图 - 在压缩状态下,它只显示一个标签和一个图标,并且在展开状态下,它将在下面显示一条消息.这是截至目前为止它如何工作的截图:

的View本身保存用于测量一次冷凝状态和展开状态的大小值,所以它在使用通常的做法视图时(例如,在一个很简单的两个状态之间进行动画,和LinearLayout)一切按预期工作.视图大小的更改是通过调用完成的getLayoutParams().height = newHeight; requestLayout();
但是,在a中使用它时ListView,视图将被回收并保持其先前的高度.因此,如果视图在隐藏时被展开,那么当它被回收用于下一个列表项时,它将显示为展开.它似乎没有收到另一个布局传递,即使我请求布局ListAdapter.我考虑使用具有两种不同视图类型(扩展和压缩)的回收器,但大小将根据消息的大小而变化.是否有一个事件,我可以听到视图重新附加ListView?或者你有另外一个如何处理这个问题的建议?
编辑:这就是我如何确定视图的扩展和压缩高度:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
if(r - l > 0 && b - t > 0 && dimensionsDirty) {
int widthSpec = MeasureSpec.makeMeasureSpec(r - l, MeasureSpec.EXACTLY);
messageView.setVisibility(GONE);
measure(widthSpec, MeasureSpec.UNSPECIFIED);
condensedHeight = getMeasuredHeight();
messageView.setVisibility(VISIBLE);
measure(widthSpec, MeasureSpec.UNSPECIFIED);
expandedHeight = getMeasuredHeight();
dimensionsDirty = false;
}
}
Run Code Online (Sandbox Code Playgroud) 因此,我正在研究从一些长期运行的网络操作中将回调接口更改为本地广播的可行性.由于Activity生命周期为需要修改UI的异步请求创建了各种复杂功能(将Activity与回调断开连接onDestroy(),不要FragmentTransaction在之后修改s onSaveInstanceState()等),我认为使用本地广播更有意义,我们可以在生命周期事件中注册/取消注册接收器.
但是,当在配置更改期间销毁并重新创建活动时,没有注册广播接收器(onPause()/onResume()例如)之间的这个小窗口时间.因此,例如,如果我们在onCreate()if中启动异步请求savedInstanceState == null(例如,对于活动的第一次启动),如果用户在操作完成之前更改其设备方向,则完成时发送的广播是否可能丢失?(即接收器在onPause()上未注册,然后操作完成,然后接收器在onResume()中重新注册)
如果是这种情况,那么它会增加我们需要添加支持的额外复杂性,而且可能不值得切换.我已经研究了其他东西,比如Otto EventBus库,但我不确定它是否有同样的问题需要担心.
我的添加显示私有数据,所以我不希望它可以在任务切换器中看到应用程序内容.
所以我试图加快一些我们正在做的绘图(用alpha透明度绘制弧的一部分)并尝试将整个弧缓存到单独的位图中,并选择性地使用alpha蒙版显示它.
从我已经完成的研究(Android的Xfermodes API演示,此示例和此工具),如果我有以下两个图形:


并使用以下内容绘制:
Xfermode DST_IN = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawBitmap(circle, 0, 0, paint);
paint.setXfermode(DST_IN);
canvas.drawBitmap(arc, 0, 0, paint);
paint.setXfermode(null);
Run Code Online (Sandbox Code Playgroud)
我应该得到这个结果:

将目标图像(圆圈)剪切到绘制源图像(圆弧)的区域.相反,我得到了完整的圆圈.如果我只是绘制弧线,它会出现在正确的位置,如果我使用DST_OUT,我得到预期结果的倒数(圆圈的其他三个象限).
我也确保为这个视图禁用硬件渲染,以防这个Xfermode出现问题,但它没有什么区别.
我把它分解成一个单独的项目,在最简单的级别试图让它工作,并使用下面的代码,我仍然有同样的问题:
public class ClippedView extends View {
private Xfermode DST_IN, DST_OUT;
private Paint paint;
public ClippedView(Context context) {
super(context);
init();
}
private void init() {
setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
DST_IN = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
DST_OUT = new PorterDuffXfermode(PorterDuff.Mode.DST_OUT);
}
@Override
protected void onDraw(Canvas canvas) { …Run Code Online (Sandbox Code Playgroud) android ×9
porter-duff ×2
android-wifi ×1
drawable ×1
drawing ×1
extendscript ×1
java ×1
javascript ×1
layoutparams ×1
masking ×1
photoshop ×1
privacy ×1
resolution ×1
screens ×1
scripting ×1
sdk ×1
shortcut ×1
string ×1