Picasso에서 Action Bar 아이콘, Notification 및 AppWidget의 이미지 설정

17038 단어 Android
Square에서 개발한 이미지 라이브러리Picasso에서 ActionBar의 아이콘, Notification, AppWidget 내의 이미지를 설정하는 방법

메소드 목록


그림의 마운트 목적지 RequestCreator#into 를 지정하는 방법에는 다음과 같은 5가지가 있습니다.
  • RequestCreator#into(ImageView)
  • RequestCreator#into(ImageView, Callback)
  • RequestCreator#into(RemoteViews, int, int, Notification)
  • RequestCreator#into(RemoteViews, int, int[])
  • RequestCreator#into(Target)
  • ImageView 설정 방법(1, 2)


    흔한 샘플.응용 프로그램 내의 ImageView에서 1이나 2를 사용하는 것은 이러한 느낌입니다.
    Picasso.with(context).load("http://cdn.qiita.com/assets/siteid-reverse-6044901aace6435306ebd1fac6b7858c.png").into(imageView);
    

    Notification으로 설정하는 방법(3)


    3가지 방법으로 이런 느낌을 준다.
    MainActivity.java
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://qiita.com/"));
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    RemoteViews views = new RemoteViews(getPackageName(), R.layout.row);
    views.setTextViewText(R.id.title, "Qiita");
    views.setTextViewText(R.id.text, "http://qiita.com/");
    Notification notification = new NotificationCompat.Builder(this)
            .setContentIntent(contentIntent)
            .setContent(views)
            .setSmallIcon(R.drawable.ic_launcher)
            .setTicker("Qiita")
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .build();
    ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).notify(1, notification);
    
    Picasso.with(this).load("https://pbs.twimg.com/profile_images/1542801560/Qiita_bigger.png").into(views, R.id.icon, 1, notification);
    
    row.xml
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp">
        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"/>
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/icon"
            android:layout_alignParentTop="true"
            android:paddingLeft="10dp"
            style="@android:style/TextAppearance.StatusBar.EventContent.Title" />
        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/icon"
            android:layout_below="@id/title"
            android:paddingLeft="10dp"
            style="@android:style/TextAppearance.StatusBar.EventContent" />
    </RelativeLayout>
    

    AppWidget 설정 방법(4)


    네 가지 방법으로 이런 느낌을 준다.
    xml/my_app_widget_info.xml
    <appwidget-provider
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:initialKeyguardLayout="@layout/my_app_widget"
        android:initialLayout="@layout/my_app_widget"
        android:minHeight="40dp"
        android:minWidth="40dp"
        android:previewImage="@drawable/ic_launcher"
        android:resizeMode="horizontal|vertical"
        android:updatePeriodMillis="86400000"
        android:widgetCategory="home_screen"/>
    
    MyAppWidget.java
    @Override
    public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds) {
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget);
        for (int i = 0; i < appWidgetIds.length; i++) {
            manager.updateAppWidget(appWidgetIds[i], views);
        }
    
        Picasso.with(context).load("https://pbs.twimg.com/profile_images/1542801560/Qiita_bigger.png").into(views, R.id.icon, appWidgetIds);
    }
    
    layout/my_app_widget.xml
    <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/icon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/ic_launcher"/>
    

    Action Bar로 설정하는 방법(5)


    5가지 방법을 구현한 매개 변수Target 인터페이스의 클래스를 만들고 이 클래스에ActionBar의 아이콘을 설정합니다.
    Picasso 내부는 Target로 유지WeakReference됩니다.
    따라서 최근에 적극적으로 방출된 안드로이드에서는 최소한 불러오기가 끝날 때까지 응용 프로그램에 저장하지 않으면 취소되고 표시되지 않습니다.다음은 구성원으로 유지됩니다.
    ActionBarTarget.java
    public class ActionBarTarget implements Target {
        private final Activity mActivity;
    
        public ActionBarTarget(Activity activity) {
            mActivity = activity;
        }
    
        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {
            mActivity.getActionBar().setIcon(placeHolderDrawable);
        }
    
        @Override
        public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
            mActivity.getActionBar().setIcon(new BitmapDrawable(mActivity.getResources(), bitmap));
        }
    
        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            mActivity.getActionBar().setIcon(errorDrawable);
        }
    }
    
    MainActivity.java
    private ActionBarTarget mTarget;
    ...
    mTarget = new ActionBarTarget(this);
    Picasso.with(this).load("https://pbs.twimg.com/profile_images/1542801560/Qiita_bigger.png").into(mTarget);
    

    좋은 웹페이지 즐겨찾기