Android: ทำ SplashScreen ง่ายนิดเดียว

บทความนี้เป็นตัวอย่างของการทำ Splash Screen หรือหน้า Intro ก่อนเข้า Application ใน Android นะ

ตัวอย่าง Source Code สามารถ Download ได้ที่นี้ SplashScreenDemo

1. สร้าง Android Project ใหม่

Create Project Part1

Create Project Part2

2. สร้าง Layout ของหน้า SplashScreen ใน Folder layout

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#FFF”>
<ImageView android:layout_gravity=”center”
android:src=”@drawable/android”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</LinearLayout>

3. สร้าง Activity Class สำหรับหน้า SplashScreen ใน Folder src

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
}

}

การทำ SplashScreen โดยใช้ Handler

3.1 การใช้ Handler สำหรับทำ Splash Screen นั้นสามารถทำได้โดยใช้ Method ของ Handler ที่ชื่อว่า postDelayed(Runnable, DelayedTime)

Runnable: คือ Process ที่จะกำหนดให้กับตัว Handler
ในตัวอย่างคือเรียกคำสั่ง finsish() เพื่อปิด Activity ปัจจุบัน
จากนั้นจึงเรียกคำสั่ง startActivty เพื่อเปิดหน้า Activity หลักของ Application ขึ้นมา

DelayedTime: คือเวลาที่เมื่อผ่านไปตามที่กำหนดแล้วจะเรียก Runnable ขึ้นมาทำงาน มีหน่วยของเวลาเป็น Millisecond (1000 Millisecond = 1 Second)
ในตัวอย่างกำหนดไว้ 2000 Millisecond หรือ 2 Second

private Handler mHandler;
mHandler = new Handler();// Call postDelayed Method for running process after delay time
mHandler.postDelayed(new Runnable() {@Override
public void run() {
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
}}, 2000);

การทำ SplashScreen โดยใช้ Thread

3.2 การใช้ Thread สำหรับทำ Splash Screen ทำได้โดยสร้าง Thread ขึ้นมาใหม่และใช้คำสั่ง start เพื่อสั่งให้ Thread ทำงาน และใน Thread ให้ทำการ Override Method run() จากนั้นจึงใช้คำสั่ง sleep(time) เข้ามาช่วยทำ SplashScreen

sleep เป็นคำสั่งให้หยุดทำงาน โดยเราสามารถกำหนดเวลาที่ต้องการสั่งให้ Thread หยุดทำงานได้ ซึ่งหน่วยของเวลาคือ Millisecond หลังจากสั่งให้หยุดทำงานเสร็จจึงเรียกใช้ Method finish() เพื่อสั่งปิด Activity ปัจจุบัน และตามด้วย Method startActivity เพื่อเปิดหน้า Activity หลักของ Application

new Thread() {

@Override
public void run() {
try {
sleep(2000);
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
} catch (Exception e) {
e.printStackTrace();
}
}

}.start();

4. แทรก Activty Tag ในไฟล์ AndroidManifest.xml

ทำการเปลี่ยน Activity แรกสุดที่จะถูกเรียกเป็น SplashScreenActivty และทำการแทรก Activity Tag ของ Class Activity หลักของ Application

<activity android:name=”.SplashScreenActivity”  android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.MainActivity”>
</activity>

Output:

1. แสดงหน้า Activity ของ SplashScreen ที่สร้างขึ้น

Output 01

2. หลังจากผ่านไป 2 วินาที ก็จะปิดหน้า SplashScreen ปัจจุบันและเรียกหน้า Activity หลักของ Application ขึ้นมา

Output 02

credit : http://puyblog.piscessera.com/android-ทำ-splashscreen-ง่ายนิดเดียว
               http://lookpat.wordpress.com/2012/01/19/android-ทำ-splashscreen-ง่ายนิดเดียว/ 

Perl : PDF album Downloader [ SS : GUI ]

SS : เป็นแบบ GUI นะครับ แต่โค้ดด้านล่างเป็นแบบธรรมดา ^^”


#!/usr/bin/perl
#########################################################################
# ░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░ Copyright (c) 2012 by sornram9254.com
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
# ░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.0
# ░░░░░░░░░█░░░░█░░░░░░░░░░░░░
# ██████▄▄█░░░░░██████▄░░░░░░░ Basically,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
# ▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
# █████▀░░░░▀▀████████░░░░░░░░ for the full license.
#########################################################################
use LWP::Simple;
print "Create new Album...\nName : ";
$album = ;
mkdir($album);
my $ua = LWP::UserAgent->new();
my $content = $ua->get('http://www.eduunix.ccut.edu.cn/index/pdf/')->content;
print "=============================================\n";
print "Please wait to Download...\n";
print "=============================================\n";
while($content =~ m/<\/td>/g){
$file = $1;
$url = "http://www.eduunix.ccut.edu.cn/index/pdf/".$file;
print "Getting ==> $file ..\n";
my $data = LWP::Simple::get $url;
my $filename = $file;
open (FH, "> /home/sornram9254/$album/$filename");
binmode (FH);
print FH $data;
close (FH);
print "\tDone ..\n";
sleep(1);
}

 

 

อยากได้ลูกเล่นอะไรเพิ่มเติมก็ลองไปโมฯกันเองนะครับ ^_^

[perl] Download video from Socialcam

หัดเขียนครับ ผิดพลาดขออภัย ^^”
#!/usr/bin/perl
#########################################################################
# ░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░ Copyright (c) 2012 by sornram9254.com
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
# ░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.0
# ░░░░░░░░░█░░░░█░░░░░░░░░░░░░
# ██████▄▄█░░░░░██████▄░░░░░░░ Basically,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
# ▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
# █████▀░░░░▀▀████████░░░░░░░░ for the full license.
#########################################################################
#example : ~$perl socialcam http://socialcam.com/v/z8hnY0ZJ?autostart=true#_=_
use LWP::Simple;
$ua = LWP::UserAgent->new();
chomp($file=shift);
$contents = $ua->get($file);
$found = $contents->content;
if($found =~ m/ `wget $1`;
}

[concept] Download Facebook Video (Regex)

เขียนเป็นแนวทางไว้และกัน ขี้เกียจเขียนโค้ดและ - -"
ใช้ Perl เขียนจะง่ายหน่อย ^^"

[concept] Download Facebook Video (Regex)
Ex. URL : http://www.facebook.com/video/video.php?v=3268371116768

1. View Source Code แล้วใช้ regex หา URL VDO
["highqual_src","http..."],
แล้วเขียนแยกดึง URL ที่ได้ออกมา ก็จะได้
http\u00253A\u00252F\u00252Fvideo.ak.fbcdn.net\u00252Fcfs-ak-ash4\u00252Fv\u00252F445209\u00252F884\u00252F3268371116768_39328.mp4\u00253Foh\u00253Db28a20ac9b04084fda9f730fc119affa\u002526oe\u00253D4FC3DE20\u002526__gda__\u00253D1338236448_503f420d701d9815a09f60a63046b042

2. เขียน Function Replace คำต่อไปนี้
แทนที่ \u00253A แทนด้วย :
แทนที่ \u00252F แทนด้วย /
แทนที่ \u002526 แทนด้วย &
แทนที่ \u00253F แทนด้วย ?
แทนที่ \u00253D แทนด้วย =

3. ก็จะได้เป็น
http://video.ak.fbcdn.net/cfs-ak-ash4/v/445209/884/3268371116768_39328.mp4?oh=b28a20ac9b04084fda9f730fc119affa&oe=4FC3DE20&__gda__=1338236448_503f420d701d9815a09f60a63046b042

By : Sornram9254

อ้อ เดี๋ยวอาจมีบางคนอาจบอกว่า fb มันก็มีปุ่มให้กด DL vdo อยู่แล้วนี่
อันนี้เอาไว้ใช้กับ vdo อันที่ไม่ได้เป็น public หรือ vdo ที่ดูได้แต่ไม่มีปุ่มให้กดโหลด
แต่ต้องเอาไปประยุกต์อีกนิดคือ ต้องเขียน function login facebook อีก - -"

เหมาะมากกำคนใช้ linux ถ้าใช้ windows ใช้ idm ดูดเอาก็ได้ - -"
จริงๆก็มีเว็บบริการพวกนี้อยู่แล้วเหมือนกันนะ :)

[Perl] Encode & Decode MD5 : GUI

เป็นโปรแกรม Perl ตัวแรกนะครับที่ผมเขียนเป็นแบบ GUI ถ้าผิดพลาดประการใดก็ขออภัยด้วยครับ (-/\-)
ปล. ด้านล่างไม่ใช่รูปของโปรแกรมนี้นะครับ ส่วนของโปรแกรมนี้มีแค่ En&De md5 แค่นั้น 55 ^^"


#!/usr/bin/perl -w
#########################################################################
# ░░░░░░░░░░░░░░░░░░░░░░░░░░ Copyright (c) 2012 by sornram9254.com
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
# ░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.0
# ░░░░░░░░░█░░░░█░░░░░░░░░░░░░
# ███████░░░░░██████░░░░░░░ Basically,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
# ▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
# █████▀░░░░▀▀████████░░░░░░░░ for the full license.
#########################################################################
use Tk;
use LWP;
use Digest::MD5 qw(md5_hex);
$mw = new MainWindow; $mw->geometry('300x150'); $mw->title("Perl GUI");

########## Encode MD5 ##########
$en_md5 = $mw->Label(-text => “Encode MD5”)->pack;
$mw -> Entry(-textvariable => \$put_en_md5) -> pack;
$mw->Button(-text => “Gen”, -command => \&en_md5 )->pack;

sub en_md5 {
my $md5_hash = $put_en_md5;
my $md5_generated = md5_hex($md5_hash);
print “Encode MD5 : Result => $md5_generated\n”;
########## Create New Form ##########
$mw = new MainWindow; $mw->geometry(‘350×70’); $mw->title(“Encode MD5 : Result”);
$mw->Label(-text => “$put_en_md5”)->pack;
my $frm_name = $mw -> Frame() -> pack(); #New Frame
my $ent = $frm_name -> Entry(-text => $md5_generated) -> pack (-ipadx => 60,-ipady => 5);
}
########## Decode MD5 ##########
$de_md5 = $mw->Label(-text => “Decode MD5”)->pack;
$mw -> Entry(-textvariable => \$put_de_md5) -> pack;
$mw->Button(-text => “Gen”, -command => \&de_md5 )->pack;

sub de_md5 {
my $md5 = $put_de_md5;
$lwp = LWP::UserAgent->new;
$lwa = $lwp->get(‘http://md5.rednoize.com/?p&s=md5&q=’.$md5);
$hash = $lwa->content;
print “Decode MD5 : Result => $hash\n”;
########## Create New Form ##########
$mw = new MainWindow; $mw->geometry(‘350×70’); $mw->title(“Decode MD5 : Result”);
$mw->Label(-text => “$put_de_md5”)->pack;
my $frm_name = $mw -> Frame() -> pack(); #New Frame
my $ent = $frm_name -> Entry(-text => $hash) -> pack (-ipadx => 60,-ipady => 5);
}
MainLoop;

[Perl] IP Information : GUI

SS :


#!/usr//bin/perl
#########################################################################
# ░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░ Copyright (c) 2012 by sornram9254.com
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
# ░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.0
# ░░░░░░░░░█░░░░█░░░░░░░░░░░░░
# ██████▄▄█░░░░░██████▄░░░░░░░ Basically,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
# ▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
# █████▀░░░░▀▀████████░░░░░░░░ for the full license.
#########################################################################
use Tk;
use LWP::Simple;
$mw = new MainWindow; $mw->title("Perl GUI :)"); $mw->geometry('200x70');
$mw->Label(-text => "IP Information")->pack;
$mw->Button(-text => "Check", -command => \&get_ip )->pack(-ipadx => 40,-ipady => 5);
sub get_ip {
my $ua = LWP::UserAgent->new();
my $contents = $ua->get('http://www.melissadata.com/lookups/iplocation.asp');
my $found = $contents->content;
while( $found =~ m/Your IP Address: (.*?)<\/span>/g ) {
$ip=$1;
print "IP : $1 \n";
$mw = new MainWindow; $mw->geometry('400x200'); $mw->title("Check IP : Result");
my $frm_name = $mw -> Frame() -> pack(); #New Frame
my $ent = $frm_name -> Entry(-text => "IP => $1") -> pack (-ipadx => 100,-ipady => 5);
#------------------------------------------------------------------------------------------------------------------------------------------
my $content = $ua->get('http://www.melissadata.com/lookups/iplocation.asp?ipaddress='.$ip)->content;
my ($isp) = ($content =~ m/ISP<\/td>(.*?) <\/b>/g);
print "ISP : $1 \n";
my ($city) = ($content =~ m/City<\/td>(.*?)<\/b>/g);
print "City : $1 \n";
my ($state) = ($content =~ m/State or Region<\/td>(.*?)<\/b>/g);
print "State or Region : $1 \n";
my ($country) = ($content =~ m/Country<\/td>(.*?)<\/b>/g);
print "Country : $1 \n";
my ($la1,$la2) = ($content =~ m/Latitude & Longitude<\/td>(.*?)  (.*?)<\/b>/g);
print "Latitude : $1 .::.::. Longitude : $2 \n";
my $ent = $frm_name -> Entry(-text => "ISP => $isp") -> pack (-ipadx => 100,-ipady => 5);
my $ent = $frm_name -> Entry(-text => "City => $city") -> pack (-ipadx => 100,-ipady => 5);
my $ent = $frm_name -> Entry(-text => "State or Region => $state") -> pack (-ipadx => 100,-ipady => 5);
my $ent = $frm_name -> Entry(-text => "Country => $country") -> pack (-ipadx => 100,-ipady => 5);
my $ent = $frm_name -> Entry(-text => "Latitude => $la1 .::. Longitude => $la2") -> pack (-ipadx => 100,-ipady => 5);
#------------------------------------------------------------------------------------------------------------------------------------------
}
}
MainLoop;

ปืนแรงชั้นเทพ!!!!! Counter-Strike Source

เมือวานผมลองไปซนดู Source Code ต่างๆของเกมส์ และก็ไปเจอของดีเข้า
ตามประสาของคนอยากรู้ เลยลองแก้โค้ดเล่นๆ เลยได้ของดีมา

ให้เข้าไปที่ C:\Program Files\css\cstrike\scripts
แล้วลองแก้โค้ดนะครับ ไฟล์นามสกุล .txt (ก่อนแก้ ควรสำรองไว้ด้วยนะครับ)

“MaxPlayerSpeed”       “999999999” // ความเร็วในการวิ่ง
“WeaponPrice”          “1”    // ราคา
“Damage”         “900”  //ความแรง (มั้ง)
“Bullets”         “100”      //จำนวนกระสุนที่ยิงออกไป
“clip_size”         “999”  // จำนวนกระสุนพร้อมใช้

สามารถแก้โค้ดอื่นๆได้ตามสบายครับ อิอิ