有谁知道有任何理由不使用lombok与Android工作室?我有60个字段和许多重要方法的POJO.我宁愿不使用访问器丢弃文件.我的选择是将字段声明为public或使用lombok.我知道如何设置它(如何在android studio中设置编译库.LOMBOK).但我不想发布我的应用程序然后发现它不能用于某些Android设备只是因为lombok.我正在再次编写API-14编码.谢谢.现在我正在编译API-23,并将继续编译最新的.
我有一个带有许多不同ViewHolders的RecyclerView适配器.其中一个ViewHolders包含一个ImageView,它需要能够拍照,调整大小,然后显示它.对于模块化,我希望ViewHolder是自包含的:它而不是父活动应该处理有关照片拍摄和显示过程的所有内容.文件路径也是常量(它永远不会改变).事实上,它是/storage/emulated/0/com.company.app/myst/cat.jpg.因此,这是我对ImageView onClick方法的实现.
@Override
public void onClick(View v) {
final FragmentManager fm = ((MyActivity) getContext()).getSupportFragmentManager();
Fragment auxiliary = new Fragment() {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
resizeResaveAndDisplayPhoto();
super.onActivityResult(requestCode, resultCode, data);
fm.beginTransaction().remove(this).commit();
}
};
fm.beginTransaction().add(auxiliary, "FRAGMENT_TAG").commit();
fm.executePendingTransactions();
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (null != takePictureIntent.resolveActivity(view.getContext().getPackageManager())) {
((MyActivity)view.getContext()).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
auxFragment.startActivityForResult(takePictureIntent, Constants.REQUEST_CODE_PHOTO);
}
}
Run Code Online (Sandbox Code Playgroud)
当resizeResaveAndDisplayPhoto把它叫做执行以下的AsyncTask
public static class ResizeThenLoadImageTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference<ImageView> imageViewWeakReference;
private final WeakReference<File> fileWeakReference; …Run Code Online (Sandbox Code Playgroud) 我正在尝试实施我的第一个JobService。我知道onStartJob实际上可以保证可以致电(是的,如果我指定了一些离谱的要求而没有到期时间,则有一些优势)。但是onStopJob呢?可以保证被调用吗?
具体来说,我有一项工作将在后台执行。但是我有办法知道工作何时完成(例如sharedPrefs)。我希望依靠何时调用onStopJob将通知发送给用户该工作已完成。
注意:onStopJob是发送通知的便捷位置,因为我已经在检查作业是否完成,以了解是否应该重试。
ps需要考虑的事情可能会有所帮助(我也在考虑):如果我onStartJob返回true,那么系统如何知道我的作业何时停止运行(除非调用)onStopJob?
我有一个由 sqlite 表支持的 ContentProvider。所以为了创建我的表,我使用了
\n\npublic class H extends SQLiteOpenHelper {\n @Override\n public void onCreate(SQLiteDatabase sqliteDatabase) {\n \xe2\x80\xa6// here I defined my original table without constraints\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n最初创建时,该表具有以下列:姓名、年龄、身高。没有限制。没有什么。
\n\n现在我需要向表添加约束。所以我增加了 DATABASE_VERSION,然后在 onCreate String 中添加了UNIQUE(name,age) ON CONFLICT REPLACE。\n我的问题是,我应该在方法内部做什么onUpgrade?更简单地说:我如何调用ALTER TABLE仅添加约束?我的尝试失败了
ALTER TABLE myTable ADD UNIQUE(name,age) ON CONFLICT REPLACE\nRun Code Online (Sandbox Code Playgroud)\n\n这是错误消息:
\n\nCaused by: android.database.sqlite.SQLiteException: near "CONSTRAINT": syntax error (code 1): , while compiling: ALTER TABLE myTable ADD CONSTRAINT UNIQUE(name,age) ON CONFLICT REPLACE\n#################################################################\nError Code : …Run Code Online (Sandbox Code Playgroud) 比较很简单:我用自定义相机拍照,使用CameraManager.然后我用默认的Galaxy Note 5相机拍摄相同的照片.可用于CameraManager的最大尺寸是3264 by 1836我使用它并将三星相机设置为相同的分辨率.结果
然后我尝试设置CameraManager照片
captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte) 100);
Run Code Online (Sandbox Code Playgroud)
仍然没有变化.只有一个变化:使用CameraManager拍摄的照片的文件大小变为2.3MB(以前为0.5MB),而三星照片的尺寸(剩余)为1.6MB.因此,即使尺寸较大,使用CameraManager拍摄的照片质量仍然较低.我可以解决这个问题的任何想法:如何使用CameraManager拍摄的照片与使用Note 5附带的默认相机应用程序拍摄的照片质量相同?
我正在处理一种情况,我需要反序列化多态类。
\n\nClass Pen{\n String name;\n List<Animal> animals;\n}\n\n//Animal can be an interface or parent class: I am flexible\n\nClass Animal{\n AnimalType type;//enum\n int legs;\n}\n\nenum AnimalType{\n dog,cat,pig,chicken;\n}\n\nClass AnimalDog extends Animal{\n //\xe2\x80\xa6\n}\n\nClass AnimalCat extends Animal{\n //\xe2\x80\xa6\n}\n\n\nClass AnimalPig extends Animal{\n //\xe2\x80\xa6\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后我创建我的 Gson 实例
\n\npublic static Gson instanceUpperCamelCaseWithTypeAdapterFactory() {\n if (null == sGsonUpperCamelCase) {\n final RuntimeTypeAdapterFactory<Animal> typeFactory = RuntimeTypeAdapterFactory\n .of(Animal.class, \xe2\x80\x9ctype")\n .registerSubtype(AnimalDog.class, \xe2\x80\x9cdog\xe2\x80\x9d)\n .registerSubtype(AnimalCat.class, \xe2\x80\x9ccat\xe2\x80\x9d)\n .registerSubtype(AnimalPig.class, \xe2\x80\x9cpig\xe2\x80\x9d);\n\n sGsonUpperCamelCase = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)\n .registerTypeAdapterFactory(typeFactory).create();\n }//the naming policy is because server sends me upper case …Run Code Online (Sandbox Code Playgroud) 我知道我可以在Java文档中使用html标签.如何为每个单元格添加带边框的表格?我希望细胞像真正的桌子一样对齐.我知道基本的标签
<table>
<tr>
<td> cell 11 </td> <td> cell 21</td>
</tr>
<tr>
<td> cell 12 </td> <td> cell 22</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
那么如何添加边框并保持表格列的宽度相同?
现在我在gradle中有两个productFlavors.我需要添加第三个.现有的两种产品风味几乎包含所有内容.称他们为猫和狗 - 他们都是动物.我需要添加的第三种风格实际上是应用程序的沙盒版本.我们可以称之为自行车.
说我的应用现在有十二项活动,全部由Cat和Dog共享.但是自行车产品的味道应该只能访问其中三个活动和自行车需要拥有它自己的启动器活动.如何重构我的代码以智能地适应这种情况?同样,两种口味几乎分享所有东西,而一种口味与其他两种口味相比要少得多.
UPDATE
似乎有一种聪明的方法可以使用更改默认源设置配置来解决此问题.基本上,我会保留/mainsourceSet以用于整个应用程序中常见的所有内容; 一个/dogCat为所有sourceSet是常见的两种狗和猫; 和一个/bike仅属于Bike 的sourceSet.
在弄清楚了这么多之后,我仍然在编写gradle sourceSets部分时遇到一些问题
android {
...
sourceSets {
. . .
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个新的应用程序。目前,我正在尝试添加依赖项
compile 'com.google.android.gms:play-services:10.2.1'
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了gradle编译错误,原因是compile 'com.android.support:appcompat-v7:25.2.0':
所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.2.0、24.0.0。示例包括com.android.support:animated-vector-drawable:25.2.0和com.android.support:mediarouter-v7:24.0.0少...(?F1)有一些库,工具和库的组合,它们不兼容,或可能导致错误。一种不兼容的情况是使用不是最新版本(或特别是低于targetSdkVersion的版本)的Android支持库版本进行编译。
有什么想法可以最好地解决这个问题吗?
摇篮文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "appIdhere"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resValue "string", "authority", "${applicationId}"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
provided "org.projectlombok:lombok:1.16.8"
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.android.support:recyclerview-v7:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:support-v4:25.2.0'
compile …Run Code Online (Sandbox Code Playgroud) 我需要创建一个 SnackBar,要求用户单击以关闭。我怎么做?以下不会编译,我不想让 SnackBar 变量成为一个字段。
final Snackbar snack = Snackbar.make(findViewById(R.id.notAvailable),
"You don't have this feature",
Snackbar.LENGTH_INDEFINITE)
.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
snack.dismiss();
}
});
snack.show();
Run Code Online (Sandbox Code Playgroud)