有时,我遇到了一些课堂设计如下.
abstract class animal {
public abstract void speak();
}
class dog extends animal {
@Override
public void speak() {
// Do something.
}
}
abstract class abstract_dog extends dog {
@Override
public abstract void speak();
}
Run Code Online (Sandbox Code Playgroud)
我想知道,abstract_dog上课的目的是什么?为什么我们将非抽象说话方法"转换"为抽象说法?
我尝试从以下代码
; The default installation directory
InstallDir $PROGRAMFILES\${PRODUCT_NAME}
Run Code Online (Sandbox Code Playgroud)
至
!include x64.nsh
${If} ${RunningX64}
; The default installation directory
InstallDir $PROGRAMFILES\${PRODUCT_NAME}
${Else}
; The default installation directory
InstallDir $PROGRAMFILES64\${PRODUCT_NAME}
${EndIf}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误: -
!insertmacro: _If
Error: Can't add entry, no section or function is open!
Error in macro _RunningX64 on macroline 2
Error in macro _If on macroline 9
Error in script "C:\Users\yccheok\Desktop\mysoftware.nsi" on line 17 -- aborting creation process
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以InstallDir在if else块中设置值?
我测试了原装相机应用程序(视频模式)附带三星Galaxy Tab 8.9.保存的前置摄像头视频能够达到24 fps,640x480.(通过在转移到Windows机器后查看视频文件的属性)
但是,当我编写前端Camera代码进行测试时.
mCamera2.setPreviewCallbackWithBuffer(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
// image processing code placed here.
}
});
Run Code Online (Sandbox Code Playgroud)
我可以实现的最大结果是(没有将视频保存到磁盘.我只是测量onviewFrame触发率的回调函数)
我希望性能与三星原装相机应用程序相同.我可以知道我错过了某种技巧吗?
如何获得给定字符串下降的高度?

例如,
abc 应该返回0. abcl 应该返回0. abcp 应该返回从descnder线到基线的距离. abclp 应该返回从descnder线到基线的距离.到目前为止我能做到的最好的是
private int getDecender(String string, Paint paint) {
// Append "l", to ensure there is Ascender
string = string + "l";
final String stringWithoutDecender = "l";
final Rect bounds = new Rect();
final Rect boundsForStringWithoutDecender = new Rect();
paint.getTextBounds(string, 0, string.length(), bounds);
paint.getTextBounds(stringWithoutDecender, 0, stringWithoutDecender.length(), boundsForStringWithoutDecender);
return bounds.height() - boundsForStringWithoutDecender.height();
}
Run Code Online (Sandbox Code Playgroud)
但是,我的代码气味是它们不够好.有没有更好更快的方法?
我有以下代码
android.hardware.Camera.Size size = new android.hardware.Camera.Size(300, 300);
Run Code Online (Sandbox Code Playgroud)
我收到以下编译错误
No enclosing instance of type Camera is accessible
Run Code Online (Sandbox Code Playgroud)
但是,我检查文档,它是一个公共构造函数
我错过了什么?
我需要一个代表宽度和高度的类.
我知道创建这样的类非常简单.但是,我不想创建自己的,而是想知道,Android是否有任何类等价的java.awt.Dimension?我能找到的最接近的是Camera.Size.但是,我在从中创建实例时遇到问题.
根据开放式Android中风?,基本上有两种方法可以为TableLayout实现边框.
使用笔划
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00ffffff"/>
<stroke android:width="1dp" android:color="#ffffff"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

但是,这不是我想要的东西,因为我只想要底边.因此,我尝试了另一种选择.
使用2层
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
<shape>
<solid android:color="#ffffff" />
</shape>
</item>
<!-- This is the main color -->
<item android:bottom="1dp">
<shape>
<solid android:color="#000000" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

但是,在列表视图选择期间,TableRow不会使用ListView选择颜色突出显示,因为其背景已由"#000000"图层接管.
有没有更好的方法我只有底部边框,但它会服从ListView选择高亮颜色?
匿名类很容易导致内存泄漏,尤其是在Android世界中,由于配置更改,Activity或Fragment可能会突然被破坏.这是许多例子中的一个.
http://chaosinmotion.com/blog/?p=696
http://blog.andresteingress.com/2011/10/12/anonymous-inner-classes-in-android/
https://blogs.oracle.com/olaf/entry/memory_leaks_made_easy
原因是,在Activity或中创建一个匿名类Fragment,匿名类将始终保持对Activityor 的隐式引用Fragment.因此,当Activity由于配置更改而趋于过时时,如果匿名类被外部世界暴露和保留,则无法进行垃圾回收.
那么,我想知道,是否使用数据持有技术是一种好方法,可以完全消除匿名类,以减少内存泄漏的风险?或者,我是偏执狂吗?
public class HomeMenuFragment {
private Parcelable selectedInfo = null;
private List<View> homeMenuRows = new ArrayList<View>();
private void fun() {
...
...
row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// homeMenuRows is member variable
for (View r : homeMenuRows) {
r.setSelected(false);
}
row.setSelected(true);
// selectedInfo is member variable
selectedInfo = watchlistInfo;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
public class HomeMenuFragment {
private …Run Code Online (Sandbox Code Playgroud) 是否确认我无法在颜色状态列表资源中使用主题颜色属性?
我有以下代码,它非常完美.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffffff" /> <!-- pressed -->
<item android:state_focused="true" android:color="#ffffffff" /> <!-- focused -->
<item android:state_selected="true" android:color="#ffffffff" /> <!-- selected -->
<item android:color="#ff000000" /> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)
<!-- Use duplicateParentState, so that we can receive click event from parent linear layout -->
<TextView
android:id="@+id/name"
android:gravity="center_vertical"
android:padding="5dp"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="48dp"
android:duplicateParentState="true"
android:textColor="@color/home_menu_text_view_selector"
android:drawablePadding="10dp" />
Run Code Online (Sandbox Code Playgroud)
但是,如果我将代码调整为以下代码,它将不再起作用.在默认模式下,它不再更改为我想要的颜色.?android:attr/textColorPrimary假设在我的情况下是黑色(#ff000000).
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffffff" /> …Run Code Online (Sandbox Code Playgroud) 目前,我有一个装载机
@Override
public Loader<List<HomeMenuRowInfo>> onCreateLoader(int arg0, Bundle bundle) {
return new HomeMenuRowInfosLoader(this.getSherlockActivity());
}
Run Code Online (Sandbox Code Playgroud)
有时,由于内容更改,我需要让加载程序重新加载.我会做的.
this.getLoaderManager().getLoader(0).onContentChanged();
Run Code Online (Sandbox Code Playgroud)
但是,我希望onCreateLoader在内容更改时将一些其他捆绑信息传递给回调.我意识到通过使用onContentChanged,没有办法这样做.
我能搞清楚的唯一方法是
this.getLoaderManager().restartLoader(0, bundle, this);
Run Code Online (Sandbox Code Playgroud)
我想知道,是否有任何重大分歧Loader的行为,使用的restartLoader不是onContentChanged,除了捆绑传递的能力吗?