小编Foa*_*Guy的帖子

Android在同一TextView中链接web和@mentions

好的,我昨天问了这个问题:

Twitter客户端中的AutoLink @mentions

我正确地连接了@mentions.但为了让它工作,我不得不把android:autoLink ="web"用于我的xml for TextView.所以现在我获得了@mentions的链接,但它不再链接URL.我尝试做两个单独的Linkify.addLinks()调用,如下所示:

mentionFilter = new TransformFilter() {
    public final String transformUrl(final Matcher match, String url) {
        return match.group(1);
    }
};

// Match @mentions and capture just the username portion of the text.
//pattern = Pattern.compile("@([A-Za-z0-9_-]+)");
pattern = Pattern.compile("(@[a-zA-Z0-9_]+)");
scheme = "http://twitter.com/";

tweetTxt = (TextView) v.findViewById(R.id.tweetTxt);


Linkify.addLinks(tweetTxt, pattern, scheme, null, mentionFilter);
Linkify.addLinks(tweetTxt, Linkify.WEB_URLS);
Run Code Online (Sandbox Code Playgroud)

但是最后被称为最后被应用的那个.任何人都可以告诉我如何将它链接到@mentions并仍然自动链接URL?

编辑以澄清更多的代码.

android textview linkify

14
推荐指数
3
解决办法
9028
查看次数

Gallery ImageAdapter convertView始终为null

我正在使用带有ImageAdapter的Gallery来使用ImageViews加载它,从我的资源中提取图像.我的问题是传递给我的适配器中的getView()方法的convertView始终为null.这意味着每次调用getView()时都会创建一个新的ImageView.这会导致可怕的性能,因为GC不断运行以擦除所有这些已创建的并且不再使用ImageView.

这显然是一个已知的错误:Gallery的视图缓存已被破坏; 从不转换观点..

我的两个首选解决方案是1.处理适配器本身的视图缓存,并处理正确重用它们所需的所有逻辑.或者2.包含我自己的Gallery小部件副本并尝试修复它以便正确返回回收的视图.

我已经开始实现第一选项,但我很快意识到我并不完全知道如何制定该操作背后的所有逻辑.我开始认为选项二可能更容易.

我在这里找到了Gallery小部件的代码:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/Gallery.java

我不完全理解它,但我可以看到它正在呼唤

child = mAdapter.getView(position, null, this);
Run Code Online (Sandbox Code Playgroud)

在745行.我(在黑暗中拍摄)猜测这是问题的根源.

有没有人有这个bug的经验.或者,任何人都可以指出我正确的方向,以确定回收器的情况如何工作,以便我可以调整这个小部件以正常工作?或者甚至提出一些我可能会忽略的替代选项.

编辑:我找到的最佳解决方案是一个名为EcoGallery的实现.我可以在网上找到它唯一可以参考的地方就在这里.要使其正常工作,您必须将每个块放在项目中的正确位置.

android view widget gallery convertview

14
推荐指数
1
解决办法
3808
查看次数

Libgdx上的通用补间引擎缺少Android Studio"添加为库"

我正在开发一个使用Universal Tween Engine的Libgdx项目.我已按照此页面上的所有步骤操作:https://github.com/libgdx/libgdx/wiki/Universal-Tween-Engine将Universal Tween Engine库安装到我的项目中.

完成所有这些步骤后,项目将在我的笔记本电脑上构建并运行良好(Android和桌面),并且来自补间引擎的动画完美运行.

但是,在我的台式计算机上,每当我尝试运行桌面应用程序时,它都会在TweenAccessor类上抛出NoClassDefFoundException而崩溃,TweenAccessor类是Universal Tween Engine的一部分.应用程序正确编译,我可以按住它,它说它无法找到的类,它打开了该类的源代码,所以我知道至少IDE的某些部分正在找到这个类.源代码编辑器中的任何库类都没有红色下划线错误.有趣的是,在我的桌面计算机上,我可以运行Android应用程序,它不会崩溃,动画效果很好.只有桌面版本不起作用.

在尝试对此进行故障排除时,我已经运行了许多事情,说要切换到"项目"视图找到jar文件,右键单击它们并选择Add as a Library我以前必须在其他项目中执行此操作并且它确实适用于我.

但我的问题是Add as a Library当我在桌面PC上右击它时,上下文菜单中缺少选项:

在此输入图像描述

我试过清理这个项目.我甚至完全卸载Android Studio并下载了一个新副本并安装了它.这样做后仍然得到相同的结果.

在右键单击jar文件时,是什么决定"添加为库"选项是否会显示在上下文菜单中?

我在桌面PC上需要做些什么才能正确使用Universal Tween Engine库jar?

编辑:gradle.build的相关部分.

project(":desktop") {
    apply plugin: "java"
    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        compile fileTree(dir: '../libs', include: '*.jar') // This one is not listed but I added anyway
    }
}
//...
project(":android") {
    apply plugin: "android"
    configurations { natives }
    dependencies {
        compile project(":core") …
Run Code Online (Sandbox Code Playgroud)

android module libgdx android-studio

13
推荐指数
1
解决办法
1523
查看次数

Android只从图库中获取图片

我正在尝试使用内置图库获取图像.它在模拟器中运行良好,它只打开图库但在真实设备上它给我多个选择其中一个是文件管理器,这使我能够选择任何类型的文件甚至apk文件当然应用程序崩溃后,我有这个代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);


    if (resultCode == RESULT_OK) {  


    switch(requestCode){    

         case SELECT_PICTURE:
              Uri selectedImageUri = data.getData();


          break;
        }  
      }  
Run Code Online (Sandbox Code Playgroud)

}

android gallery

12
推荐指数
2
解决办法
1万
查看次数

三星设备支持setTypeface(Typeface.Italic)?

我在应用程序中使用自定义View组件,通过Paint/Canvas在屏幕上绘制一些文本.

我使用以下代码(在调用canvas.drawText()之前)使我的文本斜体:

mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
Run Code Online (Sandbox Code Playgroud)

这适用于三星Galaxy Nexus.但在三星Epic 4g(Galaxy S),三星Epic Touch(Galaxy SII)和三星变换超我的文字仍然是非斜体.

有谁知道为什么这些三星设备中的一些不支持这样设置斜体文字?我知道这些设备能够呈现斜体文本,因为如果我有TextView,我可以使用它们

tv.setText(Html.fromHtml("<i>sometext</i>");
Run Code Online (Sandbox Code Playgroud)

在java或

android:textStyle="italic"
Run Code Online (Sandbox Code Playgroud)

在layout.xml中,我的文本显示为斜体.

有没有人知道另一种方法,我可以设置canvas的drawText()方法来绘制可能在这些设备上工作的斜体文本?

编辑:

以下列出了我尝试过的一些方法以及之后的评论结果.事实证明,SERIF似乎是唯一可以使用的字体.

mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT_BOLD, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC) //omg it is italic...But serifs look gross.
mPaint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.MONOSPACE, Typeface.ITALIC) //Changes font, but still no italic.
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD_ITALIC) //Bold but no italic
Run Code Online (Sandbox Code Playgroud)

再次编辑:为了实现此功能,我最终将roboto字体的斜体版本添加到我的assets文件夹并将其应用为字体.如果有人找到一种方法让它工作而不用这种方式添加它,我仍然会感兴趣.

android italic typeface

11
推荐指数
1
解决办法
4491
查看次数

Android尝试在eclipse中运行我的项目并最终使用xml.out

有时当我在Eclipse中处理项目布局时,我点击了运行按钮,而屏幕上的活动内容仍然是layout.xml文件.这导致eclipse尝试仅运行xml文件而不是实际的android项目.我知道当我这样做时,我可以通过删除创建的xml.out文件并清理/构建我的项目来修复它.但是我记得在过去的某个时候使用Eclipse时没有这样做,如果我在使用xml时运行它仍然运行Android项目,就好像我在编辑java文件时点击了运行一样.我的问题是有没有人知道是否有某种设置我可以修改,将行为改回到那,以便我不必来回切换到java文件只是为了在我实际工作时运行布局.

编辑:这有效但现在我无法启动我正在处理的任何其他应用程序而不重置该首选项.是否有一种方法可以让它将xml文件视为"不可启动",以便它可以归结为我选择的选项,如果活动资源不可启动?因为当我尝试启动xml文件时,"启动关联项目"选项似乎就像我想要它做的那样.

xml eclipse android

9
推荐指数
1
解决办法
1126
查看次数

Android getExternalCacheDir()返回null

我正在尝试有效地实现加载位图中描述的最佳实践

我遇到了麻烦,因为这行:

Utils.getExternalCacheDir(context)
Run Code Online (Sandbox Code Playgroud)

DiskLruCache.java内部返回null,这意味着NullPointerException当我尝试调用.getPath()时

android bitmap imageview android-sdcard

9
推荐指数
2
解决办法
8354
查看次数

Android VideoView重复

我有一个带有VideoView的应用程序,为了让视频在循环中播放我使用onCompletionListner再次调用setVideoPath(),如下所示:

    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer arg0) {
             mVideoView.start();

        }
    });


    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
                //I have a log statment here, so I can see that it is making it this far.
                mp.reset(); // <--- I added this recently to try to fix the problem
                mVideoView.setVideoPath(file.getAbsolutePath());
        }
    });
Run Code Online (Sandbox Code Playgroud)

这个设置在我到目前为止遇到的所有设备上运行良好,我从来没有遇到任何麻烦,不重复.

然而,我正在测试的摩托罗拉Xoom最近升级为ICS.现在,它在ICS上,这将工作一段时间并循环视频.但最终(我添加了一个计数器和一些Logs,似乎没有任何模式在停止之前成功循环多少次)它将退出循环并且只是坐在电影中第一帧的冻结帧上.

有谁知道什么可能导致这不再循环正常?或者有没有人知道另一种让VideoView正常循环的方法仍然可以在ICS下工作?

android loops android-videoview

8
推荐指数
1
解决办法
6831
查看次数

Webview shouldOverrideUrlLoading适用于以前的Android版本,除了4.1.x jellybean

以下代码适用于运行android 2.x的所有设备,但不适用于带有4.1.2的Nexus 7平板电脑

问题是shouldOverrideUrlLoading永远不会运行.onPageFinished运行正常

我会感谢任何可用的帮助.

wv = (WebView) root_view.findViewById(R.id.wv);
wv.setBackgroundColor(res.getColor(R.color.def_bgr_color));
wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
wv.setWebViewClient(new MyWebViewClient() );

WebSettings web_settings = wv.getSettings();
web_settings.setJavaScriptEnabled(true);
web_settings.setLoadWithOverviewMode(true);
web_settings.setUseWideViewPort(false);
web_settings.setPluginsEnabled(true);
web_settings.setSupportZoom(true);
web_settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

public class MyWebViewClient extends WebViewClient {
    public MyWebViewClient() {
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i(TAG, "RUN shouldOverrideUrlLoading" );
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Log.i(TAG, "RUN onPageFinished" );
    }
}


String html_str = ... something html ...

wv.loadDataWithBaseURL("file:///android_asset/", html_str, "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)

android webview android-4.2-jelly-bean

8
推荐指数
1
解决办法
933
查看次数

黑莓代码签署垃圾邮件

我是一名Android开发人员,刚刚开始使用BlackBerry.我正在尝试将我创建的Android应用程序移植到BB.在这样做我已经开始使用此命令:

Backlight.enable(true);
Run Code Online (Sandbox Code Playgroud)

此命令要求我获取代码签名密钥并开始签署我的应用程序.在我看来,每次我对代码进行任何更改时,我都必须重新签名此应用程序.当我完成签名过程时,我被告知有76个文件需要签名.每次签名完成后,我会收到76封电子邮件,告诉我签名已成功完成.这意味着在开发过程中,我每天都会接收数百封甚至数千封电子邮件.

我的问题是:这真的是工作流程应该是怎样的吗?我在签名过程中没有做正确的事情,每次我想要运行新版本时都会让我签名吗?

我现在这样做似乎完全是荒谬的,所以我希望我只是忽略了一些东西,实际上并不是这么糟糕.

blackberry code-signing

7
推荐指数
1
解决办法
531
查看次数