今天搭建了随手快递app框架的实现,主要运用了fragment和radiogroup实现了导航栏的功能

//press_02

package com.amap.api.press_02;


import fragment.Homepage;
import fragment.Me;
import fragment.News;
import fragment.Order;
import fragment.Share;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.*;

import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class DaohanglanActivity extends AppCompatActivity {
private Homepage fragment1;
private News fragment2;
private Share fragment3;
private Order fragment4;
private Me fragment5;
private RadioGroup radioGroup;
private TextView tv_address;
static String address = "定位失败";
private static final String[] authBaseArr = {//申请类型
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
};
private static final int authBaseRequestCode = 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daohanglan);

ActionBar bar = getSupportActionBar();
//自定义一个布局,并居中
bar.setDisplayShowCustomEnabled(true);
View v = LayoutInflater.from(getApplicationContext()).inflate(R.layout.actionbar, null);
bar.setCustomView(v, new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT));
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
initNavi();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
return;
}
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,//指定GPS定位提供者
1000,//指定数据更新的间隔时间
1,//位置间隔的距离为1m
new LocationListener() {//监听GPS信息是否改变
@Override
public void onLocationChanged(Location location) {//GPS信息发送改变时回调
Log.i("lgq","onLocationChanged===="+location.getProvider());
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发送改变时回调

}

@Override
public void onProviderEnabled(String provider) { //定位提供者启动时回调

}

@Override
public void onProviderDisabled(String provider) { //定位提供者关闭时回调

}
}
);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//获取最新的定位信息
if (location==null){
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,//指定GPS定位提供者
5000,//指定数据更新的间隔时间
10,//位置间隔的距离为1m
new LocationListener() {//监听GPS信息是否改变
@Override
public void onLocationChanged(Location location) {//GPS信息发送改变时回调
Log.i("lgq","onLocationChanged===="+location.getProvider());
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发送改变时回调

}

@Override
public void onProviderEnabled(String provider) { //定位提供者启动时回调

}

@Override
public void onProviderDisabled(String provider) { //定位提供者关闭时回调

}
}
);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);//获取最新的定位信息
}
locationUpdates(location);
init();
initHomePage();
new Thread(new Runnable() {
@Override
public void run() {
getWindow().getDecorView() .postInvalidate();
}
}).start();
}

private void initNavi() {
if (android.os.Build.VERSION.SDK_INT >= 23) {
if (!hasBasePhoneAuth()) {
this.requestPermissions(authBaseArr, authBaseRequestCode);
return;
}
}
}
private boolean hasBasePhoneAuth() {
PackageManager pm = getPackageManager();
for (String auth : authBaseArr) {
if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
public void locationUpdates(Location location){
if(location != null){
StringBuilder stringBuilder = new StringBuilder(); //构建一个字符串构建器,用于记录定位信息
stringBuilder.append("经度:");
stringBuilder.append(location.getLongitude());
stringBuilder.append("\n纬度:");
stringBuilder.append(location.getLatitude());
String ab = getAddress(location.getLatitude(),location.getLongitude());
address=ab;
}
else{
address="GPS失效啦!";
}
}
public String getAddress(double latitude, double longitude) {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0) {
Address address = (Address) ((List) addresses).get(0);
String data = address.toString();
int startSpace = data.indexOf("\"") + ":".length();
int endSpace = data.indexOf("\"", startSpace);
String space=data.substring(startSpace,endSpace);
return space;
}
} catch (IOException e) {
e.printStackTrace();
}
return "获取失败!";
}

private void init() {
Log.d("TAG", address);
radioGroup = findViewById(R.id.radiogroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.bt_homepage:
Log.d("TAG", "1");
initHomePage();
break;
case R.id.bt_me:
Log.d("TAG", "2");
initMe();
break;
case R.id.bt_news:
Log.d("TAG", "3 ");
initNews();
break;
case R.id.bt_order:
Log.d("TAG", "4");
initOrder();
break;
case R.id.bt_share:
Log.d("TAG", "5");
initShare();
break;
}
}
});
}

private void initOrder() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(fragment4 == null) {
fragment4 = new Order();
transaction.add(R.id.fm_homepage, fragment4);
}

hideFragment(transaction);
transaction.show(fragment4);
transaction.commit();
}

private void initShare() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(fragment3 == null) {
fragment3 = new Share();
transaction.add(R.id.fm_homepage, fragment3);
}

hideFragment(transaction);
transaction.show(fragment3);
transaction.commit();
}

private void initNews() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(fragment2 == null) {
fragment2 = new News();
transaction.add(R.id.fm_homepage, fragment2);
}

hideFragment(transaction);
transaction.show(fragment2);
transaction.commit();
}

private void initMe() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(fragment5 == null) {
fragment5 = new Me();
transaction.add(R.id.fm_homepage, fragment5);
}

hideFragment(transaction);
transaction.show(fragment5);
transaction.commit();
}

private void initHomePage() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if(fragment1 == null) {
fragment1 = new Homepage();
transaction.add(R.id.fm_homepage, fragment1);
}
hideFragment(transaction);
transaction.show(fragment1);
transaction.commit();
}
private void hideFragment(FragmentTransaction transaction) {
if (fragment1 != null) {
transaction.hide(fragment1);
}
if (fragment2 != null) {
transaction.hide(fragment2);
}
if (fragment3 != null) {
transaction.hide(fragment3);
}
if (fragment4 != null) {
transaction.hide(fragment4);
}
if (fragment5 != null) {
transaction.hide(fragment5);
}
}

}
posted on 2021-04-29 21:45  sakura_xxg  阅读(36)  评论(0)    收藏  举报