スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[Android]ProgressBarの見た目をdrawableで作成する

下のようなものを作ります(パーセント表示はTextViewが上に乗ってるだけです)
[Android]ProgressBarの見た目をdrawableで作成する3


名前は何でもよいが、下記のようなdrawableファイルを追加する。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
<shape>
<gradient
android:startColor="#FFFFFFFF"
android:endColor="#FFFFFFFF"
android:angle="270" />
<corners android:radius="3dp" />
</shape>
</item>

<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#88f4a523" />
<corners android:radius="3dp" />
</shape>
</clip>
</item>

<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="#f4a523" />
<corners android:radius="3dp" />
</shape>
</clip>
</item>
</layer-list>


そうしたら、layoutファイル上にProgressBarを配置します(下図)
[Android]ProgressBarの見た目をdrawableで作成する1

配置したProgressBarのProgressDrawable項目に対して先程作成したdrawableファイルを適用します。
[Android]ProgressBarの見た目をdrawableで作成する2

続きを読む

スポンサーサイト
このエントリーをはてなブックマークに追加

[cakePHP]cakephpのShell内部でdatabase.phpに書いたデータベース名を取得する

// app/Console/Command/HogeShell.php
class HogeShell extends AppShell {
//ConnectionManagerを使ってデータベースを取得する
var $uses = array('ConnectionManager'); // モデルを使用する場合はここに記述すれば楽。

function dbname() {
$db_config = ConnectionManager::getDataSource('default');
$db_name = $db_config->config['database'];
var_dump($db_name);
}
}


あとはなんか
php /...{appまでの絶対パス}.../app/Console/cake.php Hoge dbname
みたいな感じでコマンド打つなり、タスクに組み込むなり。


参考URL:How Can I Read the DB Configuration Settings From a Cake Shell?
このエントリーをはてなブックマークに追加

カスタムビュー作成時のテンプレート(AutoLayout対応)

File's Ownerに対してクラス名を指定します。
カスタムビュー作成時のテンプレート(AutoLayout対応)_1
#import <UIKit/UIKit.h>
@interface HogeView : UIView
@end

#import "HogeView.h"
@interface HogeView ()
@end

@implementation HogeView

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self commonInit];
}
return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self commonInit];
}
return self;
}

- (void)commonInit {
//対応するnibファイル名は"自身のクラス名.xib"となるように作成する
//ここでは"HogeView.xibとなり、nibファイル内のviewを取得する
NSString *className = NSStringFromClass([self class]);
UIView *subview = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:0] firstObject];
[self addSubview:subview];

//AutoLayout対策
//selfのビューに対してぴったりに張り付くように設定
subview.translatesAutoresizingMaskIntoConstraints = NO;
[self addConstraint:[self pin:subview attribute:NSLayoutAttributeTop]];
[self addConstraint:[self pin:subview attribute:NSLayoutAttributeLeft]];
[self addConstraint:[self pin:subview attribute:NSLayoutAttributeBottom]];
[self addConstraint:[self pin:subview attribute:NSLayoutAttributeRight]];
}

- (NSLayoutConstraint *)pin:(id)item attribute:(NSLayoutAttribute)attribute
{
return [NSLayoutConstraint constraintWithItem:self
attribute:attribute
relatedBy:NSLayoutRelationEqual
toItem:item
attribute:attribute
multiplier:1.0
constant:0.0];
}

@end
このエントリーをはてなブックマークに追加

[iOS]CoreDataにautoincrementされるidを付加する

Attributeにあらかじめ「id(Integer)」を用意しておいてください。
データを追加する度にidが自動で設定されます。
lastInsertIDメソッドで最後に追加したIDの値が取得できます。
[iOS]CoreDataの取得したデータをソートする_1

//ChildInfo.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class MotherInfo;

NS_ASSUME_NONNULL_BEGIN

@interface ChildInfo : NSManagedObject

// Insert code here to declare functionality of your managed object subclass
- (NSInteger)lastInsertID;

@end

NS_ASSUME_NONNULL_END

#import "ChildInfo+CoreDataProperties.h"


//ChildInfo.m
#import "ChildInfo.h"

@implementation ChildInfo

- (void)awakeFromInsert {
[super awakeFromInsert];

self.id = [NSNumber numberWithInteger:[self __getMaxID]+1];
}

- (NSInteger)__getMaxID {
if(!self.managedObjectContext)return NSNotFound;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:self.entity.name];

fetchRequest.fetchLimit = 1;
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"id" ascending:NO]];

NSError *error = nil;

ChildInfo *firstData = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].firstObject;

return [firstData.id integerValue];
}

- (NSInteger)lastInsertID {
return [self __getMaxID];
}

@end
このエントリーをはてなブックマークに追加

[iOS]CoreDataの取得したデータをソートする

ソートはfetch時の指定以外にも可能です。
取得したデータの「order」値に対して昇順ソートを指定します。
CoreData(画像添付)
[iOS]CoreDataの取得したデータをソートする_1

//このデータはMotherInfoのリレーションシップで一緒に取得したChildInfoデータに対して行いました。
NSArray *childInfos = motherInfo.child_infos.allObjects;
NSSortDescriptor *sortNameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"order" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortNameDescriptor, nil];
NSArray *childInfos_sorted = [childInfos sortedArrayUsingDescriptors:sortDescriptors];


参考URL:Sorting toMany relationship Set in core data
このエントリーをはてなブックマークに追加
Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。