SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/Styler.java

59 lines
2.4 KiB
Java

package jp.juggler.subwaytooter;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import java.util.Locale;
import jp.juggler.subwaytooter.api.entity.TootStatus;
class Styler {
static int getVisibilityIcon( Context context,String visibility ){
return
getAttributeResourceId( context,
TootStatus.VISIBILITY_PUBLIC.equals( visibility ) ? R.attr.ic_public
: TootStatus.VISIBILITY_UNLISTED.equals( visibility ) ? R.attr.ic_lock_open
: TootStatus.VISIBILITY_PRIVATE.equals( visibility ) ? R.attr.ic_lock
: TootStatus.VISIBILITY_DIRECT.equals( visibility ) ? R.attr.ic_mail
: R.attr.ic_public );
}
static String getVisibilityString( Context context, String visibility ){
return
TootStatus.VISIBILITY_PUBLIC.equals( visibility ) ? context.getString( R.string.visibility_public )
: TootStatus.VISIBILITY_UNLISTED.equals( visibility ) ? context.getString( R.string.visibility_unlisted )
: TootStatus.VISIBILITY_PRIVATE.equals( visibility ) ? context.getString( R.string.visibility_private )
: TootStatus.VISIBILITY_DIRECT.equals( visibility ) ? context.getString( R.string.visibility_direct )
: "?";
}
static int getAttributeColor( @NonNull Context context, int attr_id ){
Resources.Theme theme = context.getTheme();
TypedArray a = theme.obtainStyledAttributes( new int[]{ attr_id } );
int color = a.getColor( 0, 0xFFFF0000 );
a.recycle();
return color;
}
@NonNull static Drawable getAttributeDrawable( @NonNull Context context, int attr_id ){
int res_id = getAttributeResourceId( context,attr_id );
Drawable d = ContextCompat.getDrawable( context, res_id );
if( d == null ) throw new RuntimeException( String.format( Locale.JAPAN,"getDrawable failed. drawable_id=0x%x",res_id));
return d;
}
static int getAttributeResourceId(@NonNull Context context, int attr_id ){
Resources.Theme theme = context.getTheme();
TypedArray a = theme.obtainStyledAttributes( new int[]{ attr_id } );
int res_id = a.getResourceId( 0, 0 );
a.recycle();
if( res_id == 0) throw new RuntimeException( String.format( Locale.JAPAN,"attr not defined.attr_id=0x%x",attr_id));
return res_id;
}
}