我正在使用支持库在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)