有没有人对我有以下问题的暗示?
我想绘制一个填充的路径(画布),其中有一个洞.在SVG中,路径定义如下:
M 100 100 L 200 100 L 200 200 L 100 200 L 100 100 z
M 125 125 L 175 125 L 175 175 L 125 175 L 125 125 z
Run Code Online (Sandbox Code Playgroud)
我想绘制这条路径(形状)而没有路径减法路径(因为具体的软件设计)
我尝试使用java绘制了一个没有洞的完整正方形.我想知道,为什么一个SVG查看器用精神上的定义绘制漏洞而java画布没有?区别在哪里?我怎样才能做到这一点?
Path p=new Path();
p.moveTo(100, 100);
p.lineTo(200,100);
p.lineTo(200,200);
p.lineTo(100,200);
p.close();
p.moveTo(150, 150);
p.moveTo(180, 150);
p.moveTo(180, 180);
p.moveTo(150, 180);
p.close();
canvas.drawPath(p, paint);
Run Code Online (Sandbox Code Playgroud)
任何提示?
问候
我的../res/values/strings.xml中有一个包含字符串的文件,我尝试为我的项目提供源代码.这适用于普通文本.问题:我的文章中有单引号,我试图逃避它们.许多消息来源建议'在XML文件中使用它来逃避它.
但是这对我的Eclipse Android项目不起作用.当我做一个干净的项目时,它会在我的代码中显示错误.(R.class)
<string name="mystring_id">'Hello'</string>
Run Code Online (Sandbox Code Playgroud)
如何正确逃脱?
我的应用程序下载并解压缩特定文件夹中的文件:
output = new FileOutputStream(realpath, true);
output.write(buffer, 0, bytesRead);
ZipFile zipFile = new ZipFile(realpath);
Run Code Online (Sandbox Code Playgroud)
随着新推出的ACTION_OPEN_DOCUMENT_TREEIntent,我想让用户选择该文件夹.
当测试我收到的值时onActivityResult,我会得到一个类似Path的路径/tree/primary:mynewfolder,这不是物理真实的路径/sdcard/mynewfolder.
Uri treeUri = data.getData();
String sPath = treeUri.getPath();
Log.v("Path from Tree ", sPath);
Run Code Online (Sandbox Code Playgroud)
我的解压方法需要真正的路径:
ZipFile zipFile = new ZipFile(realpath);
Run Code Online (Sandbox Code Playgroud)
如何/sdcard/mynewfolder从Lollipop(API 21和22)中提供的URI 获得真实路径?
我正在使用NSKeyedUnarchiver来取消归档对象并希望使用委托(NSKeyedUnarchiverDelegate),但我的代理不会被调用.存档和取消存档工作正常,但不调用Delegates(unarchiver和unarchiverDidFinish).有人可以帮忙吗?
我有以下实现:
class BlobHandler: NSObject , NSKeyedUnarchiverDelegate{
func load() -> MYOBJECTCLASS{
let data:NSData? = getBlob();
var mykeyedunarchiver:NSKeyedUnarchiver=NSKeyedUnarchiver(forReadingWithData: data!);
mykeyedunarchiver.delegate = self;
let temp=mykeyedunarchiver.decodeObjectForKey("rootobject")
// No delegates are called
if temp==nil {
blobsexists=false;
}else{
objectreturn = temp! as! MYOBJECTCLASS;
return objectreturn;
}
}
func save1(myobject:MYOBJECTCLASS){
let data = NSMutableData()
var keyedarchiver:NSKeyedArchiver=NSKeyedArchiver(forWritingWithMutableData: data);
keyedarchiver.encodeObject(maptheme, forKey: "rootobject");
let bytes = data.bytes;
let len=data.length;
saveblob(bytes);
}
Run Code Online (Sandbox Code Playgroud)
从未调用以下代理,这些代理也在我的Blobhandler中实现:
func unarchiver(unarchiver: NSKeyedUnarchiver, cannotDecodeObjectOfClassName name: String, originalClasses classNames: [String]) -> AnyClass? {
print("I am in unarchiver !"); …Run Code Online (Sandbox Code Playgroud) 有没有人对以下问题有提示或解释?我画了一个带有位图的路径.当画布没有缩放时,它看起来不错(第一张图片).当我缩放(放大)时,位图处理器不会被缩放并且看起来非常难看.我在放大后尝试了几个重新创建bitmapshader的东西,但没有成功:-(.有人有提示吗?
没有缩放它看起来不错:

缩放它看起来很难看:

代码:
canvas.scale(scalex, scaley);
canvas.translate(itranslatex, itranslatey);
fillBMP = makePatternCross(fscalex, 1, Color.GREEN/*,fscalex,fscaley*/);
fillBMPshader = new BitmapShader(fillBMP, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT);
paintshader = new Paint();
paintshader.setShader(fillBMPshader);
canvas.drawPath(cpath.path, paintshader);
private static Bitmap makePatternCross(float fSize, float fStrokewith,int iColor) {
Log.v("Create Patter makePatternCross","makePatternCross");
float fBitmapSizeOrig = 10;
fBitmapSizeOrig=fBitmapSizeOrig*fSize;
Bitmap bm = Bitmap.createBitmap((int)fBitmapSizeOrig,(int) fBitmapSizeOrig,Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bm);
//c.scale(200, 200);
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(iColor);
//p.setStrokeWidth(iStrokewith);
p.setStrokeWidth(fStrokewith/fSize);
p.setStrokeWidth((float) 0.000001);
c.drawLine(0, 0, fBitmapSizeOrig, fBitmapSizeOrig, p);
c.drawLine(0, fBitmapSizeOrig, fBitmapSizeOrig, 0, p);
if (fSize != 1) …Run Code Online (Sandbox Code Playgroud) 我有一个在eclipse中启动的模拟器,还有一个通过usb在我的计算机上连接的真实设备.所以在我的DDMS中它显示了2个具有2个不同名称的设备(一个真实和一个模拟器)
如何指定将在哪个设备上执行ADB命令?(我缺少一个指定设备名称的参数)
如何将两个ByteBuffers连接到一个ByteBuffer?
以下不起作用:
ByteBuffer bb = ByteBuffer.allocate(100);
ByteBuffer bb2 = ByteBuffer.allocate(200);
bb.allocate(200).put(bb2);
System.out.println(bb.array().length);
Run Code Online (Sandbox Code Playgroud)
长度bb仍然是100.
使用以下代码,我设法使用我的外部浏览器(在我的情况下 - Firefox)打开一个URL.每个URL打开操作都会创建一个新选项卡,随着时间的推移,我有数百个选项卡,我想阻止它们.我用这个工具来直观地检查网页中的某些日期,当按下一个时,它应该在同一个标签中显示下一页.
我如何实现这一目标?
码:
public static void openWebpage(URL url) {
try {
openWebpage(url.toURI());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
public static void openWebpage(URI uri) {
Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 更新
我的小橱窗存放在Bitbucket上
https://bitbucket.org/solvapps/animationtest
我有一个带有视图的Activity.Contentview设置为此视图.
public class MainActivity extends AppCompatActivity {
private MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView = new MyView(this);
setContentView(myView);
startMovie();
}
public void startMovie(){
MovieTask movieTask = new MovieTask(myView, this);
movieTask.doInBackground(null);
}
}
Run Code Online (Sandbox Code Playgroud)
MovieTask是一个Asynctask并定期刷新视图.但invalidate()不刷新视图.
public class MovieTask extends AsyncTask<String, String, String> {
MyView drawingView;
MainActivity mainActivity;
public MovieTask(MyView view, MainActivity mainActivity){
this.mainActivity = mainActivity;
this.drawingView =view;
}
@Override
protected String doInBackground(String... strings) {
for(int i=20;i<100;i++){
drawingView.myBall.goTo(i,i);
publishProgress();
try {
Thread.sleep(20);
} catch …Run Code Online (Sandbox Code Playgroud) java android android-animation android-asynctask android-view