给定一个封闭的Path对象结果是这样的:

虽然这是一个矩形我正在寻找适用于任何封闭路径的东西.
我想要实现的是在其中使用具有几层的Drawable,但在运行时控制一些值,例如渐变的startColor.这是我在my_layered_shape.xml中的内容:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF000000" />
<solid android:color="#FFFFFFFF" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF000000" />
<gradient
android:startColor="#FFFFFFFF"
android:centerColor="#FFFFFF88"
android:endColor="#FFFFFFFF"
android:gradientRadius="250"
android:centerX="1"
android:centerY="0"
android:angle="315"
/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
如果我使用mMyImageView.setBackgroundResource(R.drawable.my_layered_shape),它的工作原理.我不介意拆分xml,如果必须的话,或者以编程方式完成整个事情,只要有办法获得各种颜色值.我将以编程方式进行的概念(即我在代码中执行与此xml相同的最佳操作)是:
Drawable[] layers = new Drawable[2];
ShapeDrawable sd1 = new ShapeDrawable(new RectShape());
sd1.getPaint().setColor(0xFFFFFFFF);
sd1.getPaint().setStyle(Style.STROKE);
sd1.getPaint().setStrokeWidth(1);
// sd1.getPaint().somehow_set_stroke_color?
ShapeDrawable sd2 = new ShapeDrawable(new RectShape());
sd2.getPaint().setColor(0xFF000000);
sd2.getPaint().setStyle(Style.STROKE);
// sd2.getPaint().somehow_set_stroke_color?
// sd2.getPaint().somehow_set_gradient_params?
layers[0] = sd1;
layers[1] = sd2;
LayerDrawable composite = new LayerDrawable(layers); …Run Code Online (Sandbox Code Playgroud) KitKat具有设置> WiFi>高级WiFi选项来设置优先级,如图所示.
这在我的Nexus Lollipop和Marshmallow设备上不存在.我看到有一个应用程序可用,但我想知道是否有一些我错过了管理这些的机载方式,如果没有,那么它的删除背后的想法是什么.
十多年来我一直在使用Fedora和Ubuntu十多年,而且我们从他们安装的午夜指挥官那里注意到了一个轻微但又令人烦恼的差异.当你使用Fedora更改其中的dirs,然后退出时,它已经为你完成了chdir,但在Ubuntu中它将它保存在你开始的地方.谷歌搜索在这里为旧的Ubuntus提出了一个解决方案:http://ptspts.blogspot.co.uk/2010/01/how-to-make-midnight-commander-exit-to.html 但尝试失败16.当我说失败,我的意思是命令被接受而没有抱怨,但它不会改变mc在Ubuntu中的行为.
我正在使用这种模式:
public class FooProvider extends ContentProvider {
private static final String TAG = FooProvider.class.getSimpleName();
...
@Override
public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
l.v(TAG, TAG + ".update() Uri:" + uri.toString() + " " + db.getPath());
Run Code Online (Sandbox Code Playgroud)
其中l是我的包装器圆形Androids Log.v,它采用String ... args.这给出了这样的logcat输出:
FooProvider.update() Uri: foo bar etc
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种方法来记录方法名称,在这种情况下更新(),自动并以一种方式记住TAG的重构方式.我已经看到了class.getMethods()调用,但是无法在运行时看到使用当前方法索引返回列表的方法.
我正在尝试以编程方式创建一个Bitmap,并且发现绘制一个阴影的Rect忽略了传入的颜色arg.我简化了这种情况 - 代码只是绘制一个旋转的蓝色方块,应该有一个灰色的阴影,但阴影总是蓝色的:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
android:padding="40dp"
>
</LinearLayout>
RotateRectShadowActivity.java:
public class RotateRectShadowActivity extends Activity {
private LinearLayout mMainLayout;
private ImageView mImageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater factory = LayoutInflater.from( this );
mMainLayout = (LinearLayout) factory.inflate( R.layout.main, null );
mImageView = new ImageView(this);
Rect rect = new Rect(0, 0, 300, 300);
Bitmap outerBm = Bitmap.createBitmap(
rect.width(), rect.height(), Bitmap.Config.ARGB_8888);
Bitmap innerBm = Bitmap.createBitmap(
rect.width()-50, rect.height()-50, Bitmap.Config.ARGB_8888);
Canvas outerCanvas = new Canvas(outerBm); …Run Code Online (Sandbox Code Playgroud) 我一直在SeekBar周围使用这个基本的包装,但发现它隐藏了拇指,或做了一些时髦的东西,比如在白色背景上使它变成白色,在Marshmallow下面.
我使用AS"BlankActivity"向导来创建一个项目来说明这一点,除了默认设置之外什么都没有改变.左边是Lollipop,同样的代码在Marshmallow右边运行:
有一个自定义水平SeekBar来测试是否存在定制它们的一般问题,但没有.左边的第一个垂直方向没有样式,这在Marshmallow之前很好,但是没有其他方式,中央显式使用Widget.Material.Light.SeekBar样式来测试默认情况是否未被拾取,并且最后一个给出了一个很大的线索,因为它使用旧的Widget.Holo.SeekBar样式然后出现,虽然看起来它几年前出现.
这是这个的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
>
<com.otamate.seekbarmarshbug.CustomSeekBar
android:id="@+id/seekBarCustom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.otamate.seekbarmarshbug.VerticalSeekBar
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/seekBarCustom"
/>
<com.otamate.seekbarmarshbug.VerticalSeekBar
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:layout_below="@+id/seekBarCustom"
android:layout_centerHorizontal="true"
style="@android:style/Widget.Material.Light.SeekBar"
/>
<com.otamate.seekbarmarshbug.VerticalSeekBar
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_below="@+id/seekBarCustom"
style="@android:style/Widget.Holo.SeekBar"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
CustomSeekBar:
package com.otamate.seekbarmarshbug;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.SeekBar;
public class CustomSeekBar extends SeekBar {
public CustomSeekBar(Context context) {
super(context);
}
public CustomSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public …Run Code Online (Sandbox Code Playgroud) 我正在创建一个 Observable,它在订阅时发出整数。我现在的实现是这样设置的,所以订阅它的行为从一开始就触发了生成,如下所示:
private Observable createObservable() {
return Observable.create (
new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> sub) {
for (int i = 1; i < MAX_PROGRESS + 1; i++) {
sub.onNext(i);
SystemClock.sleep(1000);
}
sub.onCompleted();
}
}
);
}
Run Code Online (Sandbox Code Playgroud)
我的理解是这是一个冷 Observable。我希望生成序列而不管任何订阅者,并且当订阅者订阅时,希望他们接收在订阅时恰好是当前的值。IOW,把它变成一个热门的 Observable。我宁愿不将 Observable 子类化,因为这会将它绑定到一个具体的 Integer 中,而实际上实际类型会有所不同。
我在市场上有一个应用程序,其中包含一些"java.lang.RuntimeException:无法生成本机字体"的崩溃报告.这在SO的其他地方有所涉及,我知道我的代码在哪里.这不是我的问题 - 问题是找出导致它的Android版本和手机类型.我从来没有在应用程序测试的任何手机上看到过这种情况,仿真器上的任何Android版本都没有提升它.我看到的唯一崩溃错误是这些并且始终在"平台其他"上.我假设如果报告了不同的崩溃,我会得到关于平台的更好线索 - 我希望看到"8","11"等.
这是一个付费应用程序.它恰好在第一次运行时发生,因此用户取消了购买.
有谁知道这个平台是什么?
XML规范<permission>和<permission-group>指的是您在"设置"中看到的图标 应用信息| 权限.
如果我已经获得了查询PackageInfo的字符串中的应用程序所需的权限,例如"android.permission.INTERNET",我该如何获得关联的权限和权限组图标?
我的目标是编写一个可在手机上运行的应用程序,让用户从APK列表中进行选择,然后将所选的应用程序安装到同一网络上的Android Things设备上。
我们实际上会忘记Android Things,因为相同的代码可以在两部手机之间工作,只是没有意义,因为目标可以通过其他多种方式(例如附件,BT等)接收APK。AT设备仅具有用于除了最近发布的Android Things Console,它对于常规的本地开发来说已经过时了。因此,我希望从手机本身复制PC进行安装的顺序,即“ adb connect,adb install ...”等。我们可以假设所有涉及的设备都已植根。
在我看来,这意味着我的应用程序必须作为一个过程发出这些命令,但是我很难使它完全正常工作。当我发出“ adb帮助”时,我会获得帮助消息,而当我发出“ adb重新启动”时,设备将重新启动,所以我认为我的做法正确。在这种情况下,我尝试进行任何其他尝试都无法获得任何回报-“ adb shell ping -c 1 192.168.62.40”的示例失败,但是从PC上的ADB可以。同样,这很好奇“ adb版本”失败,从终端再次可以。
起初我以为手机可能只安装了“ adb lite”,足以使它们作为adb目标工作,但使用PC的外壳显示情况并非如此。
这是我正在尝试的代码:
Process process = Runtime.getRuntime().exec("su adb help");
//Process process = Runtime.getRuntime().exec("su adb reboot");
//Process process = Runtime.getRuntime().exec("su adb version");
//Process process = Runtime.getRuntime().exec("su adb shell ping -c 1 192.168.62.40");
process.waitFor();
Log.d("PROCESS", "Status: "+process.exitValue());
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder everything = new StringBuilder();
String line;
while( (line = bufferedReader.readLine()) != null) {
everything.append(line);
}
Log.d("PROCESS", …Run Code Online (Sandbox Code Playgroud) android ×10
adb ×1
android-wifi ×1
crash ×1
fill ×1
google-play ×1
graphics ×1
logcat ×1
logging ×1
mc ×1
observable ×1
paint ×1
path ×1
permissions ×1
platform ×1
rx-android ×1
rx-java ×1
seekbar ×1
shadow ×1
shape ×1