رفتن به مطلب
انجمن توسعه دهندگان موبایل

آموزش ساخت پروفایل شخصی در About Phone


ارسال های توصیه شده

Owner-Profile-In-About-Phone.jpg

در این آموزش چگونگی ساخت یک پروفایل شخصی در تنظیمات تلفن را می دهیم

منظور از پروفایل شخصی اینه که خودتان در خود تنظیمات عکس و نام خود را هر وقت خواستید تغییر بدهید

اول از همه فایل زیر را دانلود کنید

UPDATED_OWNER_PROFILE_RESOURCES

فایلهای زیر را از زیپ جدا کرده

>res/layout/profile_info.xml
res/drawable/done.xml
res/drawable/pick_profile_picture.xml
res/drawable-ldpi/done_normal.png
res/drawable-ldpi/done_pressed.png
res/drawable-ldpi/ic_qs_default_user.png
res/drawable-ldpi/ic_settings_owner.png
res/drawable-ldpi/pick_profile_normal.png
res/drawable-ldpi/pick_profile_pressed.png
res/layout/nightwalkerisawesome.xml
res/layout/profile_info.xml
 

فایل ستینگ خود را دیکامپایل کنید و فایلهای بالا را در پوشهres قرار بدهید

اکنون فایلهای زیر را نیز جدا کرده و در پوشه smali کپی کنید

>smali/com/b16h22/Profile.smali
smali/com/b16h22/Profile$1.smali
smali/com/b16h22/Profile$2.smali
smali.com/b16h22/about/ProfilePicture.smali
smali/com/b16h22/about/ProfilePicture$1.smali
smali/com/b16h22/about/ProfilePicture$2.smali
smali/com/b16h22/about/ProfileName.smali
smali/com/b16h22/about/ProfileName$1.smali
 

فایل ids.xml را باز کنید و کدهای زیر را در آن قرار بدهید

>

<item type="id" name="image">false</item>
   <item type="id" name="owner">false</item>
   <item type="id" name="linear_layout">false</item>
   <item type="id" name="profile_pic">false</item>
   <item type="id" name="layout1">false</item>
   <item type="id" name="change_picture_text">false</item>
   <item type="id" name="photo_picker">false</item>
   <item type="id" name="linear_layout1">false</item>
   <item type="id" name="layout2">false</item>
   <item type="id" name="name_field">false</item>
   <item type="id" name="name_edit">false</item>
   <item type="id" name="profile">false</item>
   <item type="id" name="profile_name">false</item>
 

فایل strings.xml را باز و کدهای زیر را قرار دهید

 

><string name="change_pic">Change profile picture</string>
   <string name="profile_pic">SET PROFILE PICTURE</string>
   <string name="profile_name">CHANGE PROFILE NAME</string>
 

اکنون فایل ستینگ خود را ریکامپایل و دوباره کامپایل کنید

 

فایل public.xml را باز کنید

کدهای زیر را پیدا کرده و مانند زیر تغییر دهید

><public type="layout" name="profile_info" id="0x7f03005a" />
   <public type="drawable" name="ic_qs_default_user" id="0x7f0200b2" />
   <public type="id" name="image" id="0x7f0b011b" />
   <public type="id" name="owner" id="0x7f0b011c" />
   <public type="id" name="photo_picker" id="0x7f0b0121" />
   <public type="id" name="name_field" id="0x7f0b0124" />
   <public type="id" name="name_edit" id="0x7f0b0125" />
   <public type="id" name="profile" id="0x7f09003a" />
   <public type="id" name="profile_name" id="0x7f09003b" />
   <public type="drawable" name="ic_qs_default_user" id="0x7f02012e" />
 

فایل smali/com/b16h22/Profile.smali را باز کنید

کد زیر را پیدا

>.method protected onCreate(Landroid/os/Bundle;)V
 

و کدهای که در public.xml وارد کردید را زیرش اضافه کنید

>.method protected onCreate(Landroid/os/Bundle;)V
   .locals 4
   .parameter "savedInstanceState"

   .prologue
   .line 27
   invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

   .line 28
   const v2, 0x7f03005a # profile_info

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->setContentView(I)V

   .line 30
   const v2, 0x7f0b0121 #photo_picker

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View;

   move-result-object v0

   check-cast v0, Landroid/widget/ImageView;

   .line 31
   .local v0, photo:Landroid/widget/ImageView;
   const v2, 0x7f0b011c # owner

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View;

   move-result-object v2

   check-cast v2, Landroid/widget/TextView;

   iput-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView;

   .line 32
   const v2, 0x7f0b0124 # name_field

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View;

   move-result-object v2

   check-cast v2, Landroid/widget/EditText;

   iput-object v2, p0, Lcom/b16h22/Profile;->name:Landroid/widget/EditText;

   .line 33
   const v2, 0x7f0b0125 # name_edit

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View;

   move-result-object v2

   check-cast v2, Landroid/widget/ImageView;

   iput-object v2, p0, Lcom/b16h22/Profile;->done:Landroid/widget/ImageView;

   .line 34
   const v2, 0x7f0b011b # image

   invoke-virtual {p0, v2}, Lcom/b16h22/Profile;->findViewById(I)Landroid/view/View;

   move-result-object v2

   check-cast v2, Landroid/widget/ImageView;

   iput-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView;

   .line 37
   const-string v2, "EvoPrefsFile"

   const/4 v3, 0x0

   invoke-virtual {p0, v2, v3}, Lcom/b16h22/Profile;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;

   move-result-object v1

   .line 38
   .local v1, sharedPreferences:Landroid/content/SharedPreferences;
   const-string v2, "profileName"

   const-string v3, "null"

   invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

   move-result-object v2

   iput-object v2, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String;

   .line 39
   iget-object v2, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String;

   const-string v3, "null"

   if-ne v2, v3, :cond_0

   .line 40
   iget-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView;

   const-string v3, "Owner"

   invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

   .line 46
   :goto_0
   const-string v2, "profilePic"

   const-string v3, "null"

   invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

   move-result-object v2

   iput-object v2, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String;

   .line 47
   iget-object v2, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String;

   const-string v3, "null"

   if-ne v2, v3, :cond_1

   .line 48
   iget-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView;

   const v3, 0x7f0200b2 #ic_qs_default_user

   invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setImageResource(I)V

   .line 53
   :goto_1
   new-instance v2, Lcom/b16h22/Profile$1;

   invoke-direct {v2, p0}, Lcom/b16h22/Profile$1;-><init>(Lcom/b16h22/Profile;)V

   invoke-virtual {v0, v2}, Landroid/widget/ImageView;->setOnClickListener(Landroid/view/View$OnClickListener;)V

   .line 64
   iget-object v2, p0, Lcom/b16h22/Profile;->done:Landroid/widget/ImageView;

   new-instance v3, Lcom/b16h22/Profile$2;

   invoke-direct {v3, p0}, Lcom/b16h22/Profile$2;-><init>(Lcom/b16h22/Profile;)V

   invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setOnClickListener(Landroid/view/View$OnClickListener;)V

   .line 80
   return-void

   .line 42
   :cond_0
   iget-object v2, p0, Lcom/b16h22/Profile;->owner:Landroid/widget/TextView;

   iget-object v3, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String;

   invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

   .line 43
   iget-object v2, p0, Lcom/b16h22/Profile;->name:Landroid/widget/EditText;

   iget-object v3, p0, Lcom/b16h22/Profile;->profName:Ljava/lang/String;

   invoke-virtual {v2, v3}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V

   goto :goto_0

   .line 50
   :cond_1
   iget-object v2, p0, Lcom/b16h22/Profile;->imageView:Landroid/widget/ImageView;

   iget-object v3, p0, Lcom/b16h22/Profile;->imageUri:Ljava/lang/String;

   invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

   move-result-object v3

   invoke-virtual {v2, v3}, Landroid/widget/ImageView;->setImageURI(Landroid/net/Uri;)V

   goto :goto_1
.end method
 

فایل smali/com/b16h22/statusbar/ProfilePicture.smali را باز کنید

کد زیر را پیدا کنید

>.line 21
   const v4, 0x7f09003a
 

با ایدی پروفایل خود جایگزین کنید

کد زیر را پیدا کنید

>const v5, 0x7f02012e
 

با ایدی ic_qs_default_user جایگزینش کنید

فایل smali/com/b16h22/statusbar/ProfilePicture$1.smali را باز کنید

کد زیر را پیدا کنید

 

>.line 19
   const v2, 0x7f09003b
 

با ایدی profile_name جایگزینش کنید

اکنون settings_header.xml یا dashboard_categories.xml را باز کنید

کد زیر را اضافه کنید

><header android:icon="@drawable/ic_owner_settings" android:title="Owner Profile">
       <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.b16h22.Profile" />
   </header>
 

کد زیر را نیز در device_info_settings.xml اضافه کنید

><PreferenceCategory android:title=" INFO " />
   <Preference android:focusable="false" android:clickable="true" android:fragment=Add your App Package android:layout="@layout/nightwalkerisawesome
 

" /> فعالیت زیر را نیر در androidmanifest.xml وارد کنید

 

><activity android:label="@string/change_pic" android:name="com.b16h22.Profile">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
 

کار تمام شد موفق باشید

 

 

 

 

 

لینک آموزش در پرتال سایت

لینک ارسال
سلام

اگر امکانش هست یه اموزش برای تغیر رنگ پس زمینه ستینگ بزارید

 

ممنون

 

سلام دوست عزیز تغییر رنگ پس زمینه ستینگ بر روی تقریبا همه برنامه های اصلی گوشی تاثیر داره ممکن کمی نامتمایز بشه چون درون فایل framework-res.apk ذخیره شده حالا سر فرصت آموزشش رو قرار می دم

لینک ارسال

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

×
×
  • اضافه کردن...