20210512のAndroidに関する記事は6件です。

Flutter flutter_pdfview 使い方

内容 flutter_pdfviewの使い方の忘却録。 開発環境 PC : macOS Big Sur エディター : Visual Studio Code Flutter 1.22.1 flutter_pdfview 1.0.4 コード まずは、pubspec.yamlにパッケージを追加 あとは、読み込みたいPDFファイルも追加 pubspec.yaml dependencies: flutter: sdk: flutter flutter_pdfview: ^1.0.4 <- 追加 ・ ・ ・ assets: - sample.pdf <- 追加 ※Info.plistの修正は今回は必要ないので、追記しない ●ファイルパスを使用する方法 サンプルではassetsフォルダのファイルを読み込んで、ローカルに保存し、パスを指定している。 PDFScreen.dart class PDFScreen extends StatefulWidget { final String path; PDFScreen({Key key, this.path}) : super(key: key); _PDFScreenState createState() => _PDFScreenState(); } class _PDFScreenState extends State<PDFScreen> with WidgetsBindingObserver { final Completer<PDFViewController> _controller = Completer<PDFViewController>(); int pages = 0; int currentPage = 0; bool isReady = false; String errorMessage = ''; @override Widget build(BuildContext context) { return Scaffold( // 省略 body: Stack( children: <Widget>[ PDFView( filePath: widget.path,  // パスを指定 enableSwipe: true, swipeHorizontal: true, autoSpacing: false, pageFling: true, pageSnap: true, defaultPage: currentPage, fitPolicy: FitPolicy.BOTH, preventLinkNavigation: false, // 省略 ), // 省略 ], ), // 省略 ); } } ●ファイルパスを使用しない方法 ローカルにデータを保存したくなかったので、ファイルパスではなく、Uint8Listを渡して表示するように変更。 PDFScreen.dart class PDFScreen extends StatefulWidget { final Uint8List pdfData; PDFScreen({Key key, this.pdfData}) : super(key: key); _PDFScreenState createState() => _PDFScreenState(); } class _PDFScreenState extends State<PDFScreen> with WidgetsBindingObserver { final Completer<PDFViewController> _controller = Completer<PDFViewController>(); int pages = 0; int currentPage = 0; bool isReady = false; String errorMessage = ''; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Document"), actions: <Widget>[ IconButton( icon: Icon(Icons.share), onPressed: () {}, ), ], ), body: Stack( children: <Widget>[ PDFView( pdfData: widget.pdfData, // ファイルパスではなく、Uint8Listを使用 enableSwipe: true, swipeHorizontal: true, autoSpacing: false, pageFling: true, pageSnap: true, defaultPage: currentPage, fitPolicy: FitPolicy.BOTH, preventLinkNavigation: false, // 略 ), // 略 ], ), // 略 ); } } PDFScreenを呼び出しているウィジェットでのPDF読み込み処理 PDFRead.dart Future<void> readPDFData(String assetsPath) async { final data = await rootBundle.load(assetsPath); _pdfData = data.buffer.asUint8List(); } サーバーからPDFを読み込むときは createFileOfPdfUrlメソッド内の var bytes = await consolidateHttpClientResponseBytes(response); でUint8Listが取得できる。 httpリクエストの時は、bodyBytesがUint8Listなので、これを使う。 PDFRead.dart final url = "https://hogehoge/sample.pdf"; final header = {"sample": "samplesample"}; final request = await http.get(url, headers : header); if (request.statusCode == 200) { _pdfData = request.bodyBytes; } 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AndroidStudio4.2でSystemアプリをビルドするときのメモ

起きたこと Android Studio4.2にしたらSystemAppのビルドができなくなった 解決法 AS4.2未満 プロジェクトルートのbuild.gradleに build.gradle allprojects { // その他のコードがこの上に入る gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs.add('-Xbootclasspath/p:app/framework/framework.jar') // ここのPathはそれぞれframework.jarをおいている環境に合わせる } } } AS4.2以上 プロジェクトルートのbuild.gradleに build.gradle allprojects { // その他のコードがこの上に入る gradle.projectsEvaluated { tasks.withType(JavaCompile) { Set<File> fileSet = options.bootstrapClasspath.getFiles() List<File> newFileList = new ArrayList<>(); newFileList.add(new File("./app/framework/framework.jar")) // ここのPathはそれぞれframework.jarをおいている環境に合わせる newFileList.addAll(fileSet) options.bootstrapClasspath = files( newFileList.toArray() ) } } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Android, iOSで文字の幅を取得する方法

Android test.kt val paint = TextPaint().also { it.textSize = 10 if (!isInEditMode) { it.typeface = ResourcesCompat.getFont(context, R.font.your_font) } } paint.measureText("hoge") iOS UIFont+.swift import UIKit extension UIFont { /// テキストのwidthを取得する func measureText(text: String) -> CGFloat { let str = NSString(string: text) return str.size(withAttributes: [.font: self]).width } } test.swift let font = UIFont(name:"your_font", size: 10.0) font.measureText("hoge")
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Androidエンジニアロードマップに沿って学習してみる

はじめに ここ半年くらい仕事でAndroidに触れていますが、体系的に勉強したわけでなく、知識の漏れ抜けが乱発したので一回学習方針を整理しようと思いました そのときに見つけたのがおなじみのDeveloper Roadmapsです フロントエンド、バックエンド、インフラエンジニアのロードマップは見たことがありましたが、知らない間にAndroidが追加されていたので、こちらを参考に各項目でどう勉強していくのかというのを備忘録代わりにメモしたいと思います 概要 パット見、他のロードマップよりもこじんまりしているイメージ こちらだともう少し粒度高く書かれているので、適宜補足していきたいと思います 第一部 言語選択 ここは問答無用で記載の通り推奨されているKotlinを選択します (Google様がKotlinをAndroid開発に適した言語として開発するから使え、的なこと書いてます) 第二部 ①Android Studioインストール ここからインストールする ここではインストールのことしか書かれていないが、基本的な使い方は知っておく必要がある (もう一つのロードマップでは、デバッガー・SDKマネージャー・エミュレータについて触れられている) 細かい機能は開発中に随時ググれば良いので、この時点では最低限のところだけ抑えておきたい 大抵の入門書には、最初の方でAndroidStudioの使い方が書かれているので、それを一通り抑えておく 好きなものを選べば問題ないが、私は下記の本を使用する 「Androidアプリ開発の教科書 第2版 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン」 理由としては、現時点で最新の環境に関して書かれており、前の版も少し読んだがわかりやすかったのでこちらを選択 ②Kotlinの基礎学習 入門書を買ってもいいのだが、こちらが無料で使用できるのでこちらを選択 Kotlin BootCamp なお英語 ③オブジェクト指向プログラミングについての学習 これに関してはどこまでやればよいのか悩みどころではあるが、一旦下記の本&記事を読みたいと思う 「オブジェクト指向でなぜつくるのか」 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 オブジェクト指向と10年戦ってわかったこと ④アルゴリズム&データ構造の理解 こちらは時間の都合により省略 実施できる余裕がある人は以下をやってみると良いかも - 「アルゴリズム+データ構造」 - Introduction to Data Structures and Algorithms ⑤Gradleの使い方 こちらも現時点では細かい理解は不要だと思います AndroidStudioからProject作成時に作られるbuild.gradleの内容理解は必要だと思うので、下記を読んでおくといいかも Android Studio の Gradle の備忘録 そもそもGradleって何?って方はこちらの最初だけ読むといいかも Gradle入門 全体的におもしろいのでおすすめ 第三部 Gitに関しての学習は、私の会社の教材を使用しましたのであまり詳しく知りません(汗) ググる際にわかりやすかったのはこちらです サル先生のGit入門 ここではバージョン管理ツールとは何かから書いてくれているので初心者の方におすすめです GitHubに関してはこちらのハンズオンを一通りやりました ここも開発していくうちに覚えてくるので、あまり深堀りは必要ないかなと思います 個人開発として勉強される場合は最悪スキップしても良いかもです 第四部 (作成中)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Android]「No view found for id ~」エラーに直面した時

エラーの意味は ~というidのViewが見つからないよぉーの意です。 筆者個人の場合は、FragmentViewのidが、見つからないとのことでした。 しつかりと、transaction.add&commitしたのに… 解決策 Activity側でFragmentの呼び出しを行っていたのですが、そもそもactivityのレイアウトをsetContentViewしてませんでした^^ 以上。 なんか、前にもsetContentViewのし忘れで、一日ググりさまよった事があるなぁ~ onCreate内をいじった時に、setContentView消してしまうのあるあるなんだよなぁ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

url_launcherをAndroidで動作しない問題(flutter)

起きていた問題 以下をAndroidで試そうとしても"Could not launch url"となってしまう。 import 'package:url_launcher/url_launcher.dart'; onTap: () { launchURL("https://www.google.com"); }, .............. launchURL(String url) async { if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } } 解決策 以下をandroid>app>src>AndroidManifest.xmlに追記。 <!-- Nest within the manifest element, not the application element--> <queries> <intent> <action android:name="android.intent.action.VIEW" /> <data android:scheme="https" /> </intent> <intent> <action android:name="android.intent.action.DIAL" /> <data android:scheme="tel" /> </intent> <intent> <action android:name="android.intent.action.SEND" /> <data android:mimeType="*/*" /> </intent> </queries> <application> .... </application>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む