我正在尝试创建一个Applet加载器,我需要在显示的Applet上绘制,但我似乎无法找到一种方法来做到这一点.
我最初的理解是Applet,通过扩展Component就像任何常规的java.awt.Component一样,可以在Container中添加,只有覆盖paint方法,但它似乎不起作用.
在我的初始化代码中,我创建了一个java.awt.Frame,我在其上添加了我的java.awt.Container的自定义实现,它覆盖了所有的paint方法,以便它们在x:5,y:5处填充rect,大小为w:10 ,h:10调用父方法后
但是,当添加小程序时,无论在所有内容之上绘制什么,它总是如此
public class AppletTest {
public static void main(String[] args) {
Frame frame = new Frame("Applet Test!");
Container container = new Container() {
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillRect(5, 5, 10, 10);
}
@Override
public void paintAll(Graphics g) {
super.paintAll(g);
g.fillRect(5, 5, 10, 10);
}
@Override
public void paintComponents(Graphics g) {
super.paintComponents(g);
g.fillRect(5, 5, 10, 10);
}
@Override
public void print(Graphics g) {
super.print(g);
g.fillRect(5, 5, 10, 10);
}
@Override
public void printComponents(Graphics g) …Run Code Online (Sandbox Code Playgroud) 是否有可能删除标题栏,我觉得它很难看,不适合我的应用程序,但仍然使用actionbar?我打电话后
requestWindowFeature(Window.FEATURE_NO_TITLE | Window.FEATURE_ACTION_BAR);
Run Code Online (Sandbox Code Playgroud)
标题栏保持不变,但我的视图已消失(无法向上滚动)
是否有可能摆脱标题栏但仍保留动作栏,如果我不要求它作为窗口功能,getActionBar()每次都返回null ..
这是我第一次在Android应用程序中实现应用程序内计费,我直接从指南中获取了大部分代码,一切都忘记了直到我想到退款.示例应用程序已经实施了退款,但是以一种奇怪的方式!退款是在应用程序上收到的,但退款状态完全可以理解,但原始来源如下:
// Count the number of times the product was purchased
while (cursor.moveToNext()) {
int stateIndex = cursor.getInt(2);
PurchaseState state = PurchaseState.valueOf(stateIndex);
// Note that a refunded purchase is treated as a purchase. Such
// a friendly refund policy is nice for the user.
if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) {
quantity += 1;
}
}
// Update the "purchased items" table
updatePurchasedItem(productId, quantity);
Run Code Online (Sandbox Code Playgroud)
它的添加项目,即使它被退还,我不知道为什么会这样?退款项目是否有特殊ID或我缺少什么?我只用测试产品试过这个,所以我不知道.
如果数量为0似乎完全正确,则updatePurchasedItem方法从表中删除条目,因此我将代码更改为此
while (cursor.moveToNext()) {
int stateIndex = cursor.getInt(2);
PurchaseState state = …Run Code Online (Sandbox Code Playgroud) 场景如下,我有一个包含片段的ViewPager,这些片段中的每一个都有一些需要确认的动作.
我继续创建一个DialogFragment,目标是知道如何处理结果的片段,但是在用户确认或拒绝对话之前可能会重新创建片段.
我可以将一个lambda或其他形式的监听器传递给对话框,然后在用户确认对话框时调用它,但问题是如果设备随后被旋转,则lambda会丢失,因为它不能持久化捆绑......
我能想到的唯一方法是将一些UUID分配给对话框,并将应用程序中的UUID连接到lambda,lambda保存在应用程序内的Map上,但这似乎是非常草率的解决方案..
我尝试在线搜索现有的解决方案,例如材料对话框库样本,但大多数情况似乎都忽略了旋转对话框,但这似乎也是一个草率的解决方案,因为对话框可能是较长流程的一部分,例如如
请求购买 - >取消 - >显示带有解释的对话框 - >如果用户想要再次购买
如果我们简单地忽略旋转对话框,那么流动状态将会丢失
我必须使用NIO通过ServerSocket传输~100MB的数据,但我无法弄清楚如何在没有传输中断的情况下执行此操作/保持传输状态.
我的第一个想法是发送文件的大小,显然我无法发送大文件的大小,因为它甚至不能立即适应RAM.然后我想,为什么不只是转移直到没有收到,但那是问题进来时.
即使我一直在编写服务器端数据
FileChannel fc = new FileInputStream(f).getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
while(fc.read(buffer) > 0) {
buffer.flip();
while(channel.write(buffer) > 0);
buffer.clear();
}
Run Code Online (Sandbox Code Playgroud)
但是因为文件传输必须中断一段时间不断地读取数据并且在没有任何可用的情况下断开是不好的主意.
我无法弄清楚我怎么可能告诉客户端是否仍有数据可用而不必将每个数据片作为带有操作码等的新数据包发送,或者甚至可能?
我也想知道是否有更好的方式发送整个缓冲区而不是下面
while(channel.write(buffer) > 0);
Run Code Online (Sandbox Code Playgroud) 我正在开发Android应用程序,该应用程序应该使用Google Camera的新深度图生成功能.
谷歌基本上描述了这里使用的元数据
我可以访问大多数元数据,但遗憾的是最重要的数据被编码为extendedXmp,我无法获得任何XMP解析库来正确解析它!
我尝试过Commons-Imaging,元数据提取器以及最近的Adobes XMPCore
XMPCore可能能够处理扩展版本,但没有文档如何让它来解析JPG文件中的数据,它假设原始XMP数据要传递
是否有正确的XMP解析实现,包括JPG文件的扩展部分,或者我只是做错了什么?
这是我的尝试:
使用Commons-Imaging:
try {
String imageParser = new JpegImageParser().getXmpXml(new ByteSourceInputStream(imageStream, "img.jpg"), new HashMap<String, Object>());
Log.v(TAG, imageParser);
} catch (ImageReadException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
使用元数据提取器
Metadata metadata = ImageMetadataReader.readMetadata(
new BufferedInputStream(imageStream), false);
XmpDirectory xmp = metadata
.getDirectory(XmpDirectory.class);
XMPMeta xmpMeta = xmp.getXMPMeta();
String uri = "http://ns.google.com/photos/1.0/depthmap/";
Log.v(TAG, xmpMeta.doesPropertyExist(uri, "GDepth:Format") + " " );
try {
XMPProperty hasExtendedXMP = xmpMeta.getProperty("http://ns.adobe.com/xmp/note/", "xmpNote:HasExtendedXMP");
Log.v(TAG, hasExtendedXMP.getValue().toString() + " " + new …Run Code Online (Sandbox Code Playgroud) 所以很久以前我在开发墙纸更换器,并将其发布。一段时间后,我开始收到评论,墙纸的尺寸无法正确调整。我也尝试了不同大小的emus,它们是正确的。我正确地缩放了位图,等等。但是,Android倾向于以某种方式重新缩放墙纸!有办法避免这种情况吗?我的代码:
Display display = parent.getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Bitmap scaled = Bitmap.createScaledBitmap(wallpaper, width, height, true);
WallpaperManager wm = WallpaperManager.getInstance(getContext());
wm.setBitmap(scaled);
Run Code Online (Sandbox Code Playgroud)
我也一直在尝试其他方法,但似乎无济于事,即使我事后检查重新缩放的墙纸是否正确大小也是如此。:(有什么想法吗?
我面临着一个我的大脑无法处理的问题!我需要创建一个循环来创建这样的模式:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
所以内部的数字越大,但我就是不知道如何创建这样的循环,我的人工智能需要这个循环,这样我就可以为实体创建兴趣区域,所以这不是学校作业,也是我迄今为止尝试过的
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
System.out.print("?");
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
我真的想不出一种方法来获取代表它处于哪个级别的数字!我一直在尝试对自己进行可视化等等,以找出创建这个或根本创建这个的最佳方法。请帮助我和我的大脑免受头痛!:)我想要的是简单的伪代码或任何易于理解的语言的代码(例如java,c ++,c ...)
我在FragmentPagerAdapter中有大约20个片段,它们包含一个列表,它从中拾取片段,因此不会重新创建片段.
private List<TitledFragment> fragments;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList<TitledFragment>();
}
@Override
public Fragment getItem(int i) {
return fragments.get(i).getFragment();
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getTitle();
}
public synchronized List<TitledFragment> getFragments() {
return fragments;
}
public synchronized void addFragment(TitledFragment fragment) {
fragments.add(fragment);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
FragmentPagerAdapter被设置为ViewPager的适配器,之后我重新排序片段(洗牌仅用于测试)
Collections.shuffle(mSectionsPagerAdapter.getFragments());
mSectionsPagerAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,只有标题的顺序被改变,即使它为getItem返回不同的片段,因为顺序是不同的.为什么这样,我怎么能绕过它呢?
java android android-fragments android-viewpager fragmentpageradapter
我正在设计一款游戏,我对自己的工作有很好的了解.
然而,我一直在努力提高我的OOP技能但是我现在面对同样的问题,我应该如何使用抽象的对象?
让我说我有一个实体列表,代表屏幕上有x和y属性的任何东西,可能宽度和高度还没有完全搞清楚!
然后我有特殊类型的实体,一个可以移动,一个不能,也可能是将来可以碰撞的东西.
它们都在实体集合中(List<Entity>在我的例子中),现在我想模拟移动的实体并且是主循环上的DynamicEntity实例,但它们都在实体的抽象列表上,我不知道是实体在循环中是否是动态实体.
我知道我可以检查一下,instanceof但我很确定这不是最好的主意.
我已经看到有些人在实体中有类似布尔值的东西来检查它的类型,但我真的不想硬编码所有类型的实体.
我只是想知道这种情况下的最佳做法是什么?