我正在使用支持库在android kitkat上显示矢量图像.当我在emulater上测试我的应用程序时,我没有看到任何这些图像.我为Android棒棒糖及以上版本做了一个单独的布局,它完美地工作(我想因为我使用的是src属性而不是srcCompat这里的代码我在哪里使用支持库
<LinearLayout android:layout_alignParentBottom="true"
android:id="@+id/lake_detail"
android:background="@drawable/my_fishing_plan_footer_line"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="90dp"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_marginRight="3dp"
android:id="@+id/fire_logo"
android:layout_width="20sp"
android:layout_height="20sp">
<ImageView
android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
android:layout_width="30sp"
android:layout_height="30sp" />
<ImageView
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
android:layout_width="25dp"
android:layout_height="25dp" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我在android studio预览窗口看到了图像.
我做了自己的休息api,现在它只有端点,我显示了一些图像.这是它在spring boot应用程序中的外观
@GetMapping("/image/{name:.+}")
public byte[] getImage(@PathVariable(value = "name") String name) {
return storageService.loadFileAsByteArray(name);
}
Run Code Online (Sandbox Code Playgroud)
这是存储服务方法
public byte[] loadFileAsByteArray(String filename) {
Resource resource = loadFile(filename);
try {
return IOUtils.toByteArray(resource.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
在这里我在我的Android应用程序中做了什么
Glide.with(context!!.applicationContext).load("http://myipaddress/api/image/myimage.jpg").into(it)
Run Code Online (Sandbox Code Playgroud)
所以我从滑翔中得到了什么
根本原因(2/2)
java.io.FileNotFoundException: No content provider: http://myipaddress/api/image/myimage.jpg
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1112)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:964)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:887)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)
at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)
at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:299)
at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:394)
at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:151)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:142)
at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:65)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:97)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:148)
at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:142)
at …Run Code Online (Sandbox Code Playgroud) 我正在开发指南针应用程序,我希望指南针指向特定的纬度经度位置,而不是通常的北方.我发现了一些问题,与我的问题,但我不管理,使他们为我工作.这是我的代码:
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private ImageView image;
private float currentDegree = 0f;
private SensorManager mSensorManager;
private TextView tvHeading;
private Location location = new Location("A");
private Location target = new Location("B");
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.imageViewCompass);
tvHeading = (TextView) findViewById(R.id.tvHeading);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
location.setLatitude(54.903535);
location.setLongitude(23.979342);
target.setLatitude(54.904618);
target.setLongitude(23.978782);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() { …Run Code Online (Sandbox Code Playgroud) 我正在使用设计支持库
defaultConfig {
vectorDrawables.useSupportLibrary = true
...
}
dependencies {
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
...
}
Run Code Online (Sandbox Code Playgroud)
当我添加FloatingActionButton时
<android.support.design.widget.FloatingActionButton
android:layout_gravity="right"
android:layout_margin="20dp"
android:tint="#fff"
android:src="@drawable/ic_menu_manage"
app:backgroundTint="#b3000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
到我的一个布局我得到这个错误
Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
Run Code Online (Sandbox Code Playgroud)
这是我的主要活动(it has navigation drawer)
public class MapNavActivity extends AppCompatActivity
Run Code Online (Sandbox Code Playgroud)
我知道,如果我改变它应该工作AppCompatActivity到Activity
但是,这对我不起作用.这是清单文件中定义的活动
<activity
android:name=".MapNavActivity"
android:label="@string/title_activity_map_nav"
android:theme="@style/AppTheme.NoActionBarMain" />
Run Code Online (Sandbox Code Playgroud)
这是styles.xml文件中的主题
<style name="AppTheme.NoActionBarMain" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme …Run Code Online (Sandbox Code Playgroud) android android-inflate android-theme android-support-library floating-action-button
我有一个谷歌地图的Android地图,可以根据用户的屏幕位置从服务器动态加载标记.因此,例如,如果用户移动地图,我只是向服务器发出请求,并且我正在发送屏幕边界,并且基于此我得到标记数据(id和corrdinates),稍后将其解析并创建为实际指针.问题是,当用户返回到同一区域(之前创建了哪些标记)时,我仍然提出相同的请求并获得相同的数据(但显然我不会让重新创建该标记,所以我只是在那里运行所有标记的循环在地图上并检查地图标记id是否相等服务器发送数据标记ID,如果它相等,我只是打破循环)
try {
Collection<MarkerItemData> mapMarkers = algorithm.getItems();
JSONObject jsonObject = new JSONObject(strings[0]);
JSONArray respondArray = jsonObject.getJSONArray("respond");
list = new ArrayList();
for (int i = 0; i < respondArray.length(); i++) {
JSONObject station = respondArray.getJSONObject(i);
int id = station.getInt("_id");
boolean skip = false;
for (final MarkerItemData m : mapMarkers) {
if (m.getId() == id) {
skip = true;
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不认为这种方法是最好的.我还有其他想法应该有效(至少我认为)
那么哪些想法最好?还有其他想法吗?(对不起我的英语不好)
我给出了我想为用户显示RatingBar的布局.我使用自己的自定义图标而不是默认星标.问题是图标是矢量格式,当我使用它时我得到奇怪的效果(见下图)它应该显示5个图标,但它只显示一个为什么是这样?

我将在这里添加我的代码我的图标代码(在drawable文件夹中)//empty_rate.xml
//middle_rate.xml
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="48"
android:viewportHeight="48"
android:width="4dp"
android:height="4dp">
<group
android:translateX="117"
android:translateY="-118.5">
<path
android:pathData="M-93 122.5c-11 0 -20 9 -20 20 0 11 9 20 20 20 11 0 20 -9 20 -20 0 -11.1 -9 -20 -20 -20zm0 36c-8.8 0 -16 -7.2 -16 -16 0 -8.8 7.2 -16 16 -16 8.8 0 16 7.2 16 16 0 8.8 -7.2 16 -16 16z"
android:fillColor="#076127" />
<path
android:pathData="M-105.2 142.5c0 -6.7 5.4 -12.2 12.2 -12.2l0 24.3c-6.7 0 -12.2 -5.4 …Run Code Online (Sandbox Code Playgroud) 我做了简单的应用程序,我根据服务器的屏幕坐标得到标记.问题是标记不会立即出现在地图上.用户用户必须放大或缩小才能看到标记.这是为什么?从服务器下载标记数据时是否可以立即显示标记?或者有可能以某种方式刷新地图?我知道在以前的版本中,有一种方法map.invalidate()基本上就是我现在需要的方法.不幸的是,这种方法现在不可用.
我将添加代码片段,以添加我的标记
@Override
protected void onPostExecute(ArrayList<MarkerItemData> markerItemData) {
super.onPostExecute(markerItemData);
if(markerItemData != null) {
mClusterManager.addItems(markerItemData);
}
}
Run Code Online (Sandbox Code Playgroud) 昨天来自Crashlytics的我disk I/O error (code 522)在打开数据库时注意到。问题是该崩溃已被16位用户报告了36次。可悲的是我无法重现此错误。这是发生错误的代码片段
SessionDbManager(Context context, String tripDbFileName) {
this.context = context;
this.tripDbFileName = tripDbFileName;
this.tripDbHelper = new SessionDbHelper(this.context, tripDbFileName);
SQLiteDatabase database = null;
int attempt = 1;
while (database == null) {
try {
database = this.tripDbHelper.getWritableDatabase(); // here's the error
} catch (android.database.sqlite.SQLiteException e) {
Crashlytics.logException(e);
XLog.e("Failed to load history data from database ", e);
if (attempt == 5) throw e;
}
attempt++;
}
db = database;
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪
Fatal Exception: android.database.sqlite.SQLiteDiskIOException: disk I/O error …Run Code Online (Sandbox Code Playgroud) 这里我如何将字节写入文件。我正在使用FileOutputStream
private final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
FragmentActivity activity = getActivity();
byte[] readBuffer = (byte[]) msg.obj;
FileOutputStream out = null;
try {
out = new FileOutputStream("myFile.xml");
out.write(readBuffer);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想打开那个文件,所以我需要有那个文件的路径。那么我需要如何打开该文件?
编辑:
在这里我如何从文件中读取,但我什么也看不到......
BufferedReader reader = null;
FileInputStream s = null;
try {
s = new FileInputStream("mano.xml");
reader = new BufferedReader(new InputStreamReader(s));
String line = reader.readLine();
Log.d(getTag(), line);
while …Run Code Online (Sandbox Code Playgroud) 我是Laravel的新手,当我尝试将数据数据保存到数据库时,我遇到了问题.这是我得到的错误
传递给Illuminate\Database\Eloquent\Relations\HasOneOrMany :: save()的参数1必须是Illuminate\Database\Eloquent\Model的实例,给定的数组,在S:\ Documents\samdyk\vendor\laravel\framework\src中调用\照明\数据库\ Eloquent\Relations\HasOneOrMany.php在第267行并定义
所以这是我的代码
class Skill extends Model
{
protected $fillable = ['skill_title', 'knowledge_level'];
}
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function skills() {
return $this->hasMany(Skill::class);
}
} …Run Code Online (Sandbox Code Playgroud)