اگر پروژه شما محنوا محور از روش زیر استفاده کن
یک کلاس برای سفارشی کردن متن ایجاد کن
یک لایوت بسازید
با این روش دیگر نیاز به نوشتن کد های اضافی نیست و
یک کلاس برای سفارشی کردن متن ایجاد کن
کد پیاچپی:
public class CustomTextView extends TextView {
private static final String FONT = "font";
private static final String SIZE = "size";
SharedPreferences sp;
private void inti(Context context) {
sp=PreferenceManager.getDefaultSharedPreferences(context);
Typeface face=Typeface.createFromAsset(context.getAssets(), sp.getString(FONT, "BZar.ttf"));
this.setTypeface(face);
this.setTextSize(sp.getInt(SIZE, 22));
}
public CustomTextView(Context context) {
super(context);
inti(context);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
inti(context);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inti(context);
}
protected void onDraw (Canvas canvas) {
super.onDraw(canvas);
inti(getContext());
}
}
لایوت هایی که می خواهیم TextView قرار دهید به صورت زیر عمل کنید
کد پیاچپی:
<com.example.android.CustomTextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=".کلیدستان"
android:textColor="#000000" />
یک لایوت بسازید
کد پیاچپی:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SettingActivity">
<com.example.sa.CustomTextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="سلام ایرانی" android:textColor="#000000" />
<SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" />
- <RadioGroup android:id="@+id/radioGroup1" android:layout_width="match_parent" android:layout_height="wrap_content">
<RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Bzar" android:onClick="onFontClick" />
<RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BFANTEZY" android:onClick="onFontClick" />
</RadioGroup>
</LinearLayout>
یک کلاس برای بخش تنظیمات ایجاد کنید
کد پیاچپی:
SettingActivity extends Activity {
private static final String SIZE = "size";
private static final String FONT = "font";
private SeekBar seekbar;
private SharedPreferences sp;
private TextView txt_sample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
sp=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
seekbar = (SeekBar) findViewById(R.id.seekBar1);
seekbar.setMax(50);
seekbar.setProgress(sp.getInt(SIZE, 22));
txt_sample = (TextView) findViewById(R.id.txt);
txt_sample.setTextSize(sp.getInt(SIZE, 22));
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//add here your implementation
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//add here your implementation
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// txt_sample.setTextSize(progress);
sp.edit().putInt(SIZE, progress).commit();
}
});
}
public void onFontClick(View v) {
RadioGroup rg = (RadioGroup) v.getParent();
String selectItem ="BZar.ttf";
switch (rg.getCheckedRadioButtonId()) {
case R.id.radio0:
selectItem = "BZar.ttf";
break;
case R.id.radio1:
selectItem ="BFANTEZY.TTF";
break;
}
sp.edit().putString(FONT, selectItem).commit();
}
}
با این روش دیگر نیاز به نوشتن کد های اضافی نیست و
تغییرات با تعریف کلاس CustomTextView اعمال می شود
همه آدما برای رسیدن به جایی که هستند از تجربه دیگران استفاده کردند
پس چرا ما از اندک تجربه ای که داریم برای راهنمایی دیگران استفاده نکنیم؟؟
پس چرا ما از اندک تجربه ای که داریم برای راهنمایی دیگران استفاده نکنیم؟؟