آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تغیر عکس پس زمینه برنامه

Mir Unknown  10 سال پیش  10 سال پیش
+2 0

من میخواهم تو تنظیمات برنامه با زدن یک دکمه عکس پس زمینه کل برنامه رو عوض کنم کسی میتونه کمکم کنه؟!

0 0
اون Layout ( یا هرچیز دیگه ای ) کلیت رو تعریف کن و بعد متود setBackground رو براش صدا بزن و رنگ یا از drawable عکست رو واردش کن . البته این سوالا رو با یه سرچ ساده میتونی جوابشون بگیری ا :) (10 سال پیش)
0 0
با جستجو بجا خوبی نرسیدم اگه شما رسیدید لینک بدید لطفا (10 سال پیش)
0 0
اینجوری میشه پس زمینه رو عوض کرد لینک حالا میشه این کار رو توی متد onResume انجام بده ، و بررسی کن کدوم گزینه انتخاب شده ، و متناسب با اون عکست رو ست کن. (10 سال پیش)
0 0
لینک سرچ گوگله؟! (10 سال پیش)
0 0
خب چیکار کنم عزیز من ، شما بگو (10 سال پیش)
0 0
من اگه با سرچ میتونستم تو سایت های انگلیش پیدا کنم اینجا سوال نمیکردم.ی جا یکم در این باره توضیح داده بودید گفتم شاید میتونید کمک کنید. به هر حال مرسی از کمکتون (10 سال پیش)
0 0
آخه کاری که میخوایید انجام بدید اونقدر سخت و پیچیده نیست که تو سایتهای خارجی یه آموزش انحصاری براش بزارن ، با همین آموزش های خودمون میتونید انجام بدید. میخوام خودتون یاد بگیرید. شروع کنیم؟ (10 سال پیش)
0 0
الان مشکل حل شد؟ (10 سال پیش)
0 0
اره خودم حلش کردم.مرسی (10 سال پیش)
0 0
خداروشکر ولی لااقل اینجوری زحمت بچه ها رو نمیبردی زیر سوال! spiritکه گفت باید تو onResume کدش رو بذاری. لینک کد هم داد! (10 سال پیش)
0 0
من میخوام از ی اکتیوتی کاری کنم بک گراند کل اکتیویتی ها عوض بشن.چیزی که گفت با لینکی ک داد بهم هیچ کمکی نکردن (10 سال پیش)
0 0
خب بک گراند کل اکتیویتی ها رو کجا باید عوض کنی؟ خب تو onresume دیگه (oncreate هم میشه ولی وقتی بک میزنی تصویر عوض نمیشه) حالا که گذشت ولی لااقل کد خودت رو بذار اگه سوال یکی دیگه بود لینک بدیم به اینجا ;) (10 سال پیش)
0 0
کامل شد میزارم فعلا فقط تونستم رنگشو عوض کنم واس عکس هنوزم مشکل دارم (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Mir Unknown  10 سال پیش
+3 0

 پاسخ صحیح

کارهای که من انجام دادم

ی متغیر در کلاس G تعریف کردم به این شکل

 public class G extends Application {

public static Context context;

public static String defaultBackground;
public static SharedPreferences preference;
public static Activity currentActivity;


@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
preference = getSharedPreferences(getPackageName(), Context.MODE_PRIVATE);

defaultBackground = preference.getString("default_background", "theme00");

}

}

حالا تو اکتیوتی تنظیمات چند تا دکمه گذاشتم و یک فیلد تعریف کردم که با کلیک رو هر دکمه یک مقدار رو در فیلد میریخت

بعد با یک دکمه مقدار ریخته شده در فیلد رو توی همون متغیر G میریخت

 public class ActivitySettings extends Activity {

public String theme;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
G.currentActivity = this;
setContentView(R.layout.settings);


Button btnTheme = (Button) findViewById(R.id.btnTheme);
final Button btnSev = (Button) findViewById(R.id.btnSev);

findViewById(R.id.btnTheme01).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme00";
}
});
findViewById(R.id.btnTheme02).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme01";
}
});

findViewById(R.id.btnTheme03).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme02";
}
});

btnSev.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

if (theme != null) {
G.defaultBackground = theme;
SharedPreferences.Editor editor = G.preference.edit();
editor.putString("default_background", G.defaultBackground);
editor.commit();

}
}
});

}
}

بعد ایدی همه LinearLayout های اکتیویتی ها رو lit گذاشتم بعد تو onCreate همه اکتیویتی ها شرط گذاشتم که اگر مقدار اون متغیر کلاس G فلان بود فلان عکس واس بکگراند LinearLayoutکه ایدیش lit هست ست بکنه

 public class ActivityMail extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
G.currentActivity = this;
setContentView(R.layout.mail);

final LinearLayout lit = (LinearLayout) findViewById(R.id.lit);

if (G.defaultBackground.equals("theme00")) {
lit.setBackgroundResource(R.drawable.backgrund);
} else if (G.defaultBackground.equals("theme01")) {
lit.setBackgroundResource(R.drawable.backgrund12);
} else if (G.defaultBackground.equals("theme02")) {
lit.setBackgroundResource(R.drawable.backgrund17);
} else if (G.defaultBackground.equals("theme03")) {
lit.setBackgroundResource(R.drawable.backgrund19);
}

نمیدونم راه اصلیش همینه یا نه! واس من ک همین جواب داد منم از همین استفاده کردم!

0 0
در کل منم همین مد نظرم بود ، الان خودت نوشتیش خیلی ارزش داره تا اینکه اونموقع یکی دیگه همینو مینوشت برات ، موفق باشی (10 سال پیش)
0 0
خیلی خوبه. فقط یه نکته ای! الان مثلا تو از صفحه اصلی میری به تنظیمات و تم رو تنظیم میکنی و برمیگردی به صفحه اصلی. آیا الان که برگشتی تم انتخابی اعمال شده؟ احتمالا نه! برای اعمالش باید از برنامه خارج بشه دوباره وارد بشی یا برای اکتیویتی هایی که باز میکنی اعمال میشه درسته؟ برای اینکه این مشکل رو رفع کنی بهتره کدهای آخرت رو به جای oncreate توی onresume بذاری ;) (10 سال پیش)
0 0
بجای اینم از Listener مربوط استفاده کنه نور علی نور میشه دیگه :) لینک (10 سال پیش)
0 0
اره اعمال میشه صادق جان چون با دکمه ذخیره از اول باز میکنم اکتیویتی رو (10 سال پیش)
0 0
اپریت جان من که سر در نیاوردم از لینکی که دادی! (10 سال پیش)
پاسخ به سوال 
Spirit  10 سال پیش
+5 0

مزیتش اینه که تغییرات در لحظه اجرا میشه ، یعنی اگه داخل همین اکتیوتی زمینه مورد نظر رو تغییر بدی همون لحظه پس زمینه هم تغییر میکنه :

public class ActivityMail extends Activity {

public String theme;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
G.currentActivity = this;
setContentView(R.layout.mail);


Button btnTheme = (Button) findViewById(R.id.btnTheme);
final Button btnSev = (Button) findViewById(R.id.btnSev);

findViewById(R.id.btnTheme01).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme00";
}
});
findViewById(R.id.btnTheme02).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme01";
}
});

findViewById(R.id.btnTheme03).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
theme = "theme02";
}
});

btnSev.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

if (theme != null) {
G.defaultBackground = theme;
SharedPreferences.Editor editor = G.preference.edit();
editor.putString("default_background", G.defaultBackground);
editor.commit();

}
}
});


}

OnSharedPreferenceChangeListener myPrefListner = new OnSharedPreferenceChangeListener(){
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {

if(key.equals("default_background")) {
final LinearLayout lit = (LinearLayout) findViewById(R.id.lit);

if (G.defaultBackground.equals("theme00")) {
lit.setBackgroundResource(R.drawable.backgrund);
} else if (G.defaultBackground.equals("theme01")) {
lit.setBackgroundResource(R.drawable.backgrund12);
} else if (G.defaultBackground.equals("theme02")) {
lit.setBackgroundResource(R.drawable.backgrund17);
} else if (G.defaultBackground.equals("theme03")) {
lit.setBackgroundResource(R.drawable.backgrund19);
}
}
}
};

@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(myPrefListner);
}

@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(myPrefListner);
}
0 0
S P ! R ! T جان اگر بخوای این تغییرات در یک اکتیوتی دیگه اعمال بشه کدام قسمت برنامه تغییر می کنی و تغییرات در اکتیوتی دو چگونه خواهد بود ، ممنون میشم راهنمایی کنی (10 سال پیش)
+1 0
lit هر اکتیویتی رو با مقدار .defaultBackground ست کن (10 سال پیش)
0 0
دوست عزیزم Mir Unknown راستش من متوجه نشدم منظورت چیه ! ببین من میخام وقتی یک سری تصویر و دکمه در activity 1 قرار بگیره و وقتی تصویری از activity 1 انتخاب میشه ، بتونیم اون تصویر رو به عنوان بک گراند activity 2 انتخاب کرد ، ممنون میشم اگه راهنمایی کنی ؟ (10 سال پیش)
+1 0
این لینک رو یه نگاه کنین.http://answers.uncocoder.com/question/4684/ایجاد-بک-گراند-برای-یک-اکتیوتی (10 سال پیش)
0 0
ممنونم دوست عزیز atras ، این تاپیک رو خودم پرسیده بودم ، تا به این کد ها رسیدم که دوستان معرفی کرده بودم ، اما در این مرحله به مشکل خوردم ،که سوالمو پرسیدم و نمیدونم باید چطوری برنامه رو تغییر بدم ،ممنون میشم اگه راهنمایی کنی ؟ (10 سال پیش)
+1 0
من تا جایی که بلد بودم در پاسخ بالا گذاشتم واس خودم که جواب داده در برنامم که لینکش تو پروفایلمه میتونید ببینید.شمام یکم ور برید حتما میتونید (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .