カスタムビューの実装の車の音場効果の設定

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/Utzw0p0985/article/details/100011897

この記事を読むのに約10分

この記事では、車のビューのマシンの設定上の自己定義された音場効果に関するスターの質問の友人から来て、惑星の取調べは無料、そして兄の感謝の鶏のおかげで〜、簡単に効果を達成するために、分析原理、記事を書くためにいくつかの時間を取ることですそして、努力が、我々は、私の知識への歓迎、基本的には満足のいく答えを得ることができ、私が質問に答えるための特別な領域を持っている私の惑星、少なくとも質問をするグループに水をする必要はありません、確かに便利何かを学ぶ、惑星を追加しました惑星[こんにちはアンドロイド]

       640?wx_fmt = PNG      

 我々は間違いなく、実際には、これらのスピーカーと背景は、すべてが後者のレイアウトによって達成することができ、要素のレンダリングの数を分析する必要がある効果を達成するために、我々は本当にあり、実際には、固定軸とドットです次のようにコントロールに触れ、そこに区別することができます:背景行列(計算する)、赤い点(リアルタイムモバイル)だけでなく、二人はとにかく固定し、その後、私たちが行く〜

 

2本の垂直線が最初に描かれ、これは比較的簡単である、軸にアスペクトビューにより決定されます

 

       640?wx_fmt = PNG      

あなたは明確な分割軸でない場合は、ここに提供するには、マップを描く、あなただけクリアする必要があります

 

     

640?wx_fmt = PNG

また、レンダリングを見ることができます:

       640?wx_fmt = PNG       

 

まあ、我々は円を描く、ここで私自身、あなたもサークル自分自身を描くことができ、あなたは写真を使用することができます小さな赤いドット、赤ドットの描画が簡単である、約描く今続けます。

       640?wx_fmt = PNG      

最初、彼は動くので、2つのダイナミックで、デフォルトはもちろんの各ビューの半分の幅と高さ、で、彼のブラシはSTY設定する必要があるため、私は、moveXとmoveYを定義されているすべての比較的簡単なドット、FILL_AND_STROKEするルを私たちが説明するの描き、その後、入力されます。

       640?wx_fmt = PNG      

 

これは、我々はレンダリングを見ることができます:

 

       640?wx_fmt = PNG      

 

それでは、私たちは、特定の論理の開発を始めるために持っています。

 

1.点击View的区域内,红点移动到对应位置

2.根据红点移动的位置,来计算是哪个象限以及计算出喇叭的值

3.通过接口将最终的结果抛出

 

我们先来实现第一个需求吧,第一个需求不难,只要监听触摸事件即可,我们来看下

 

       640?wx_fmt = PNG      

 

在我们的ACTIon_DOWN中,只要将对应的坐标实时更新,然后刷新View即可办到,如图:

 

       640?wx_fmt = PNG      

 

但是这里有一个问题,就是因为坐标和中心点会充电,导致有这样一种现象:

 

       640?wx_fmt = PNG      

 

我可以把小圆点移动到一些边边角角上去,这就不好了,那么我们开始优化一下:

 

       640?wx_fmt = PNG      

 

这是优化的代码,优化起来不难,但是你解读起来就需要理解这些绘图的关系了,我们结合画图来分析:

 

       640?wx_fmt = PNG      

 

如图所示,我们的左上,右上,左下的逻辑,当然,我们也可以使用拖动小红点来实现一些逻辑,不过没必要,我们继续往下看,根据红点移动的位置,来计算是哪个象限以及计算出喇叭的值。

 

这里要说一个逻辑,那就是喇叭的阈值为 0 - 20 ,我们现在居中,才是 10,如果我们选择了某一个点,那么他的计算也是不同的,这里我们可以归类一个这样的算法:

 

1.由于居中才是默认值,都是10

2.移动小红点,四个喇叭都需要修改值

3.我们怎么区分喇叭的值

 

同样的根据横竖坐标,View的高宽 / 20 即可得到对应值,我们来看图吧,看图就能理解了

 

       640?wx_fmt = PNG      

 

那么我们现在着手开始实现代码吧:

 

       640?wx_fmt = PNG      

开开心心实现了这部分代码,然后发现还是有问题的,比如图中的黄色标点,得到的结果是:

 

喇叭1:16

喇叭2:3

喇叭3:2

喇叭4:17

 

问题就处在这个喇叭三上,很明显喇叭三其实不可能只有2的,但是根据我们的计算公式 moveY / (viewHeight / 20) 得到的结论又..... 这里我们就发现问题了,不能这样算,而是应该算对角线,我们来看图:

 

       640?wx_fmt = PNG      

 

每个象限的计算公式如下,那么我们如何计算呢?这里可以利用勾股定理来计算三角形斜边,但是在代码中实现有些费尽,我们可以这样来计算,通过两个坐标的x - x与 y - y 即可:

 

       640?wx_fmt = PNG      

 

POW()メソッドは、Yに対するXのパワーの値を返し、この式の使用は、我々が計算します:

 

       640?wx_fmt = JPEG      

 

コード生成された画像の読み取りは非常に良いではありません、あなたがデモ自体をダウンロードすることができ、我々は4つの象限を算出した、と迂回の中心を作ったことがわかり、そして今、私たちはただ実現していない第三のステップを実現することができますインターフェイスを介しての最終結果がスローされます

 

インターフェイスを定義

 

       640?wx_fmt = PNG      

 

そして、外国人は、最終的な結果は、スロー:

 

       640?wx_fmt = PNG      

これは、実際には、Benpianが終わって、そしてここで私は、長方形を考えていた、例えば、実際には、通常の状況下では、ほぼ正方形であり、良いグリッドを描き、比較的に言えば、しかし、主に、何の困難ビューの描画を追加しませんこれらの領域の値を計算するために、それは非常に面倒なこともあり、私はこれは私が唯一のそれはそれのアイデアを提供言うことができる最善の方法であることを保証することはできません、と私はそれが何であるかを行き来するだけです、私たちは自分自身を達成するために、グリッドを描くことを願っています、我々は、コードをコピーするのではなく、自分で考えることができ、唯一の進捗状況が学習している、よく、PPTおよび関連ソースコードは下にダウンロードすることができます。

 

リンク: https://pan.baidu.com/s/1W7A8DT-NzCP8IUpIn5hgTg 

抽出コード:9q8e

利害関係者は、ああ、私の知識の惑星に参加することができ、あなただけのオリジナルああ読み取るためにクリックすることができます〜

約プラネットの知識は公共の数に右下隅のクリックで見つかった[と]することができ、私は学ぶか、[こんにちはアンドロイド] [知識]惑星を送信するために、公開番号がすることができます。

おすすめ

転載: blog.csdn.net/Utzw0p0985/article/details/100011897