我正在努力将谷歌地图集成到我正在处理的应用程序中,到目前为止我还有一段相当不愉快的时间.无论如何,我终于得到了一个显示地图的SupportMapFragment并设置了位置和缩放级别.
到目前为止,这是我的代码的功能部分:
@Override
public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
Location location = BundleChecker.getExtraOrThrow( KEY_LOCATION, new Bundle[] { savedInstanceState, getArguments() } );
setLocation( location );
if ( checkGooglePlayServicesStatus() == ConnectionResult.SUCCESS ) {
setMapFragment( new SupportMapFragment() );
getActivity().getSupportFragmentManager().beginTransaction().add( R.id.location_detail_mapFrame, getMapFragment() ).commit();
}
populateAddress();
attachButtonListeners();
Runnable initMap = new Runnable() {
@Override
public void run() {
if ( checkGooglePlayServicesStatus() == ConnectionResult.SUCCESS ) {
try {
GoogleMap map = getMapFragment().getMap();
LatLng latLng = getLocation().getAddress().getLatLng( getActivity() );
CameraUpdate update = CameraUpdateFactory.newLatLngZoom( …Run Code Online (Sandbox Code Playgroud) 这是我第一次创建自定义视图,我试图通过XML填充条目 - 以类似于Spinner的方式.我显然在这里做错了,但我在Spinner之后设计了我的方法,所以我没有看到出了什么问题.
为了解释这段代码的意图,我正在创建一个自定义首选项列表.MultiChooserOption是一个允许用户从选项列表中选择多个内容的项目.TextOption简单地定义将在列表中显示的视图,即,是一个标题和一些其他元素,对于TextOption的子类,另一个元素将是文本而不是小部件(复选框等).
以下是应该对我构建它以及我的logcat输出的方式产生任何影响的所有内容的来源.
attrs.xml
<resources>
<attr name="caption" format="string" />
<attr name="options" format="reference" />
<declare-styleable name="TextOption">
<attr name="caption" />
<attr name="text" format="string" />
</declare-styleable>
<declare-styleable name="MultiChooserOption">
<attr name="options" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
MultiChooserOption.java
public class MultiChooserOption extends TextOption<CharSequence> {
public static final String TAG = MultiChooserOption.class.getSimpleName();
private List<CharSequence> options;
private MultiChoiceListView<CharSequence> choiceView;
public MultiChooserOption(Context context) {
super( context );
}
public MultiChooserOption(Context context, AttributeSet attrs) {
super( context, attrs );
initOptions( attrs );
}
private void initOptions( AttributeSet attrs ) …Run Code Online (Sandbox Code Playgroud) 我现在正在使用roboguice,我们可以使用注释来获取类注入
@InjectView(R.id.list)ListView x
Run Code Online (Sandbox Code Playgroud)
@inject表示法有效,因为我从RoboActivity或任何Robo类扩展
我的问题是,如果我想注入一个名为的自定义类
public class CustomUtilManager {
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在RoboActivity中注入它
@Inject CustomUtilMananger
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我的第二个问题是,如果我有一个类,那不是任何Robo*类的子类
说
public class MyOwnClass {
}
Run Code Online (Sandbox Code Playgroud)
我如何获得注入器并注入另一个注入类,例如CustomUtilManager
即我怎么说
public class MyOwnClass {
@Inject CustomUtilManager customUtilManager;
}
Run Code Online (Sandbox Code Playgroud) 我需要对 REST 服务执行 http GET 并将正文包含在GET. 不幸的是,#setDoOutput( true )连接上的设置会强制POST. 有没有办法送一个GET尸体?
编辑: 我尝试发送的正文是 JSON。
我正在尝试扩展ImageView并添加阴影。我遇到一个问题,其中阴影被视图边界裁剪,看起来很糟糕:
我尝试通过LayoutParams编程方式设置宽度/高度,并尝试使用其他XML属性(如)android:adjustViewBounds,但显示没有变化。同样,设置a android:layout_margin在防止阴影被修剪方面无效。
谁能帮助我找出如何避免这种剪裁?我确定这里有些明显的东西我可以俯瞰。
目前,我的代码针对一种情况非常具体:我正在尝试在圆位图下方绘制一个圆“阴影”。显然,视图边界会导致裁剪,但是我一直无法找到一种解决方案来扩大视图边界。
在#android-dev上声称我的数学根本是错误的。我正在考虑屏幕密度,这是一个常见问题。我已经对所有方面的数学知识进行了三重检查,但找不到可能错误的地方。
最初,在密度为3.0的xxhdpi屏幕上,56dp图像的宽度恰好为168px,高度为168px。在宽度和高度上添加2dp以解决偏移后,layoutParams的宽度为174,高度为174。
我的基本方法是让超级ImageView完成其工作并绘制xml中指定的位图,而我要做的就是另外绘制一些内容。这种方法有根本的缺陷吗?
我使用最大的宽度或高度onLayout来确定我的阴影圆的半径应为:radius = Max(width,height)/2。我绘制一个半径和中心为(Cx,Cy)的圆,其中Cx是宽度的中点加上x偏移,Cy是高度的中点加上y偏移以创建阴影效果。我使用画布onDraw在位图上绘制了另外一个圆,然后在允许ImageView超级onDraw控件处理源位图之前,将圆放置在画布上。
另外,在我中,onLayout我尝试考虑x和y偏移距离,并通过将这些距离添加到视图的宽度和高度中LayoutParams,但是在绘制视图时,没有发现视图大小的变化。
这是我正在使用的代码:https : //gitlab.com/dm78/ImageViewWithShadowExample/
以下是相关代码:
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<dm78.example.imageviewwithshadowexample.CustomShadowImageView
android:id="@+id/circle"
android:layout_gravity="center"
android:src="@drawable/circle"
android:layout_margin="16dp"
android:layout_width="56dp"
android:layout_height="56dp"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
CustomShadowImageView.java
package dm78.example.imageviewwithshadowexample;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Build;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import …Run Code Online (Sandbox Code Playgroud) 我正在使用Ruby 2.1.1p76和Rails 4.0.4以及Fabrication gem.
是否可以参考目前正在制造的物体?
我有一个班级Foo和一个班级吧.我有每个制造商.我的问题是类Foo和Bar中的每一个都包含一个引用另一个类的字段:
class Foo < ActiveRecord::Base
has_many :bars
belongs_to :current_bar, class_name: "Bar"
end
Run Code Online (Sandbox Code Playgroud)
class Bar < ActiveRecord::Base
belongs_to: :foo
end
Run Code Online (Sandbox Code Playgroud)
必须制作一个然后另一个然后在我的规范中为第一个设置参考是很麻烦的:
let!( :foo ) { Fabricate( :foo ) }
let!( :bar ) { Fabricate( :bar, foo: foo ) }
before( :each ) do
foo.update( current_bar: bar )
end
Run Code Online (Sandbox Code Playgroud)
我宁愿只是制作Foo和有其current_bar制造,并且已经提到我制造美孚.我已经阅读了制作宝石文档,我找不到任何可行的方法.我可能只是在忽视它.有谁知道这样做的方法?
为了完整性 - 制造商:
Fabricator( :foo ) do
current_bar nil
end
Run Code Online (Sandbox Code Playgroud)
Fabricator( :bar ) do
foo
end
Run Code Online (Sandbox Code Playgroud) 我将自定义子视图放入 ViewPager。我在拦截触摸事件方面没有任何重要经验,所以这对我来说都是全新的。
我在 SO 和其他博客上查看了大量与此相关的问题,但到目前为止,没有任何建议的建议对我有太大帮助。
我的自定义视图有两个相互重叠的面板。我需要允许用户在不将这些触摸事件传递给父 ViewPager 的情况下滑动最前面的面板。
我很难理解这一点,因为似乎我的观点onTouchEvent总是被调用,尽管false在我观点的onInterceptTouchEvent. 我的理解在这里可能是错误的,但我的印象是返回false应该意味着我的观点onTouchEvent不应该被调用。
这是我的自定义视图的代码:
package com.example.dm78.viewpagertouchexample;
import android.content.Context;
import android.support.v4.view.GestureDetectorCompat;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyCustomView extends FrameLayout {
public static final String TAG = MyCustomView.class.getSimpleName();
private GestureDetectorCompat mGestureDetector;
private PanelData mPanelData;
private LinearLayout mFrontPanel;
private float xAdditive;
private float mFrontPanelInitialX = Float.NaN;
private float mDownX = Float.NaN;
private float frontPanelXSwipeThreshold = …Run Code Online (Sandbox Code Playgroud) android ×6
java ×2
arrays ×1
get ×1
google-maps ×1
motionevent ×1
roboguice ×1
ruby ×1
touch-event ×1
xml ×1