Android 프로그래밍의 일기예보 샘플 소스 프레젠테이션 및 효과 전시 --1
일기예보에 관한 안드로이드 앱은 제가 아주 상세하게 몇 가지 부분으로 나누어 상세하게 설명합니다. 여러분이 좋아하는 것이 하나 있으면 좋겠습니다.
또한 더 많은 사람들이 제 블로그에 가입하여 함께 공부하고 교류하며 함께 진보하기를 바랍니다. 감사합니다!
일기예보를 작성한 후 시간이 나면 파일 관리자와 기타 실용적인 앱 개발에 대해 이야기하여 학습과 교류를 편리하게 합니다.
일기예보를 개발하기 전에 먼저 날씨 정보를 얻을 수 있는 API 키를 준비해야 한다. 여기서 필자는 여러분에게 인터넷 주소를 추천하는데 비교적 실용적이다.
key 신청 주소:http://www.wunderground.com
키를 얻은 후에 우리는 우리의 개발을 시작할 수 있다. 우리의 인터페이스를 더욱 간소화하고 아름답게 보이기 위해android를 사용했다.support.v4.jar 제3자 라이브러리picasso-2.2.0.jar, 없는 어린이 신발 도착 가능http://download.csdn.net/detail/jspping/8084689자체 다운로드
다운로드가 끝난 후에 이들을 프로젝트libs 폴더로 가져옵니다. 없는 것은 자체로libs를 새로 만들 수 있습니다. 새로운 안드로이드 프로젝트를 만든 다음에 프로그래밍을 시작합니다. 우선 목록 파일 XML에 응용 프로그램에 대응하는 권한을 추가해야 합니다. 여기에 필요한 것은 네트워크 접근, 네트워크 상태, GPS 권한 등입니다.구성 목록은 다음과 같습니다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- GPS 、 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
권한이 설정되면 프로그래밍을 시작합니다. 필자는 이 곳에서 응용 프로그램에 환영하는Animation을 추가했습니다. 사용자에게 더욱 우호적인 체험을 하기 위해 코드를 보겠습니다.
package com.newer.myweather;
/**
* Animation
* @author Engineer-Jsp
* @date 2014.10.27
* */
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.view.animation.AlphaAnimation;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SplashActivity extends Activity {
private TextView versionNumber;
private LinearLayout mLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mLinearLayout = (LinearLayout) findViewById(R.id.LinearLayout01);
versionNumber = (TextView) findViewById(R.id.versionNumber);
versionNumber.setText(getVersion());
if (isNetWorkConnected()) {
AlphaAnimation aa = new AlphaAnimation(0.5f, 1.0f);
aa.setDuration(2000);
mLinearLayout.setAnimation(aa);
mLinearLayout.startAnimation(aa);
// , , 3000ms, 3
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//
Intent service = new Intent(SplashActivity.this,
WeatherService.class);
startService(service);
finish();
//
Intent intent = new Intent(SplashActivity.this,
MainActivity.class);
startActivity(intent);
}
}, 3000);
} else {
showSetNetworkDialog();
}
}
//
private void showSetNetworkDialog() {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle(" ");
builder.setMessage(" ");
builder.setPositiveButton(" ", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
// API 10 3.0
if (android.os.Build.VERSION.SDK_INT > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
ComponentName component = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
finish();
}
});
builder.setNegativeButton(" ", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.create().show();
}
//
private boolean isNetWorkConnected() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
//
private String getVersion() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), 0);
return "Version " + info.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
return "Version";
}
}
}
로드된 splash.xml 코드:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/home_gradiend"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/logo"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="60dip"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:scaleType="centerInside"
android:src="@drawable/logo" >
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:gravity="bottom"
android:shadowColor="#FFFFFF"
android:shadowDx="0"
android:shadowDy="2"
android:shadowRadius="1"
android:text="@string/app_name"
android:textColor="#444444"
android:textSize="35dip"
android:typeface="serif" >
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:gravity="bottom"
android:shadowColor="#FFFFFF"
android:shadowDx="0"
android:shadowDy="2"
android:shadowRadius="1"
android:text="( )"
android:textColor="#444444"
android:textSize="25dip"
android:typeface="serif" >
</TextView>
<TextView
android:id="@+id/versionNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:gravity="bottom"
android:shadowColor="#FFFFFF"
android:shadowDx="0"
android:shadowDy="2"
android:shadowRadius="1"
android:text=" "
android:textColor="#444444"
android:textSize="20dip"
android:typeface="serif" >
</TextView>
</LinearLayout>
환영 인터페이스 효과도 전시:
활동과 서비스에 들어가기 전에 사용자의 현재 네트워크 상태를 판단하고 사용자가 현재 네트워크 상태가 좋지 않거나 네트워크가 없으면 네트워크 설정 인터페이스를 팝업하여 사용자가 선택할 수 있도록 한다. 만약에 네트워크가 문제가 없으면 이 애니메이션을 재생한 후에 의도적으로 서비스를 시작하여 메인 활동으로 이동한다.
다음 편에서는 서비스와 주요 활동의 사용을 설명할 것이다. 이 내용은 이것뿐이다. 지식이 많지 않으니 잘 소화해 보자. 우리 다음 편에서 이어서 이야기하자.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.