java - Android - 操作 Twitter 个人资料图片

标签 java android twitter bitmap

我正在使用 Twitter4J 库。 我想在一个圆圈中显示用户头像个人资料。 我不熟悉使用位图,也不熟悉从服务器获取某些内容。

现在,四处搜索,我正在使用这种方式:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];

        try {
            SharedPreferences mSharedPreferences = getActivity().getSharedPreferences("MyPref",0);

            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
            builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);

            // Access Token
            String access_token = mSharedPreferences.getString(
                    PREF_KEY_OAUTH_TOKEN, "");
            // Access Token Secret
            String access_token_secret = mSharedPreferences.getString(
                    PREF_KEY_OAUTH_SECRET, "");

            AccessToken accessToken = new AccessToken(access_token,
                    access_token_secret);
            Twitter twitter = new TwitterFactory(builder.build())
                    .getInstance(accessToken);

            User user = twitter.showUser(accessToken.getUserId());
            urldisplay = user.getProfileImageURL();




        } catch (TwitterException e) {
            // Error in updating status
            Log.d("Twitter Update Error", e.getMessage());
        }




        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        final int width = mIcon11.getWidth();
        final int height = mIcon11.getHeight();
        final Bitmap outputBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

        final Path path = new Path();
        path.addCircle(
                (float)(width / 2)
                , (float)(height / 2)
                , (float) Math.min(width, (height / 2))
                , Path.Direction.CCW);

        final Canvas canvas = new Canvas(outputBitmap);
        canvas.clipPath(path);
        canvas.drawBitmap(mIcon11, 0, 0, null);

        return outputBitmap;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

但是这样每次我重新打开应用程序时都会加载图片..

我想调整位图大小并给它一个边框等,但我稍后会搜索如何执行此操作。 我认为如果当用户登录 Twitter 时我下载一次他的个人资料图片,然后每次需要时重复使用它会更好。 是否可以?做我想做的事的更好方法是什么?谢谢。

最佳答案

您可以使用一些库来缓存位图。看看这些:

  1. Android-Universal-Image-Loader (目前正在使用这个)
  2. Picasso (刚刚发现这个)

至于加载图像有一个圆圈,使用这个库:

关于java - Android - 操作 Twitter 个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121080/

相关文章:

java - 通过 Java 读取 XML、替换文本和写入同一个 XML 文件

java - SpringBoot 2.0.5应用程序启动后失败

java - 为 apache commons 快速傅里叶变换算法构建示例数据

java - 对于 Jackson,如何安全地共享 ObjectMapper ?有没有不可变的ObjectMapper?

javascript - OAuth.io 弹出窗口立即关闭

android - 从 android 中的服务访问共享 SharedPreference

Android ViewPagerIndicator 选项卡

android - : SAX Parser, XPath,DOM,XMLPullParser的区别

javascript - 用于获取推文列表的 Twitter API 1.1

java - Twitter 查询结果仅返回 15 条推文